C ++错误我需要帮助吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++错误我需要帮助吗?相关的知识,希望对你有一定的参考价值。

我做了一个代码,必须编写一个数学函数,然后给出图像。首先,将函数作为字符串变量引入,但我不知道如何将其转换为另一种类型的变量以返回函数的图像。

我得到的编译器错误是:

无法将'std::string {aka std::basic_string<char>}'转换为'const char*'作为参数'1'转换为'int printf(const char*, ...)'

#include<iostream> 
#include<cmath> 
#include<math.h> 
#include<vector> 
#include<stdio.h> 
#include<iomanip> //setprecision// 
#include<sstream> 
#include<string> 
#define precisio 4 
#define K 100   
using namespace std;  
double valors(double a, double b);  
double g(double x);  
double x; 
double a = x; 
double y(x); 
int i;    
int main () {       
  cout << setprecision(precisio);   
  cout << "Escriu l'interval de la funció" << endl;         
  double a, b;      
  cout << "
 a =";     cin >> a;       
  cout << "
 b =";     cin >> b;       
  cout << "Escriu la funcio" << endl;   string s;   
  cin >> s;     cout << s;      
  double y = printf(s.c_str());         
  valors(a,b); 
}  

double valors(double a, double b){          
  int punts = K*(b-a) + 1;      
  double amplada = (b-a)/K;         
  cout << "
	x	f(x)" << endl;        

  for (int i = 0; i < punts; i++) {                 
    cout << "	" << a << "	" << g(a) << endl;      
    a = a + amplada;    
  }     
}

double g(double x){
   return y; 
}
答案
double valors(double a, double b)

您的函数不返回任何值,而它应返回“double”。

另一答案

我假设的目的是:

cin >> s;   cout << s;
double y = printf(s.c_str());

是将用户输入的值输入标准输入y。如果是这样,你应该这样做:

cin >> y;

另一答案

使用C ++ 14的在线编译器没问题:here

#include<iostream>
#include<stdio.h>
#include<iomanip> //setprecision//
#include<sstream>
#include<string>
#define precisio 4
#define K 100
using namespace std;
double valors(double a, double b);
double g(double x);
double x;
double a = x;
double y(x);
int i;
int main()
{
    cout << setprecision(precisio);
    cout << "Escriu l'interval de la funció" << endl;
    double a, b;
    cout << "
 a =";
    cin >> a;
    cout << "
 b =";
    cin >> b;
    cout << "Escriu la funcio" << endl;
    string s;
    cin >> s;
    cout << s;
    double y = printf(s.c_str());
    valors(a, b);
}

double valors(double a, double b)
{
    int punts = K * (b - a) + 1;
    double amplada = (b - a) / K;
    cout << "
	x	f(x)" << endl;

    for (int i = 0; i < punts; i++)
    {
        cout << "	" << a << "	" << g(a) << endl;
        a = a + amplada;
    }
}
double g(double x)
{
    return y;
}

以上是关于C ++错误我需要帮助吗?的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助查找 C 程序中的分段错误

需要帮助识别简单多线程代码中的错误

在 r 值概念上需要一些帮助

OpenMP 代码帮助

C++ 密码保护错误,我需要帮助:D

BlueJ 不需要 main() 方法吗? [关闭]