2015-11-10 157 views
-6

我已經完成了一個代碼,它必須寫成一個數學函數,然後給出圖像。首先,將函數作爲字符串變量引入,但我不知道如何將其轉換爲另一種類型的變量以返回函數的圖像。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 << "\n a =";  cin >> a;  
    cout << "\n 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 << "\n\tx\tf(x)" << endl;   

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

double g(double x){ 
    return y; 
} 
+0

你爲什麼要執行此:'雙Y =的printf(s.c_str());'時,你可以使用'的cout << S;'像你這樣在上面的行中? –

+1

使用調試器將有助於澄清問題。這是學習使用調試器的一個很好的例子。 –

+0

此代碼編譯並運行時不進行任何編輯。無論問題是什麼,它或者不在這個代碼中,或者它不是被問到的。 –

回答

0

沒有問題,這個在線編譯利用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 << "\n a ="; 
    cin >> a; 
    cout << "\n 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 << "\n\tx\tf(x)" << endl; 

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

在Visual Studio上它返回一個錯誤xD –

+0

LOL Youd沒有包含; - ; –

+0

@Kostas Lifeboy,它在IdeOne那裏。這不僅僅在代碼文本中。 –

1
double valors(double a, double b) 

你的函數不返回任何值,而它應該返回「double」。

+0

這是我遇到的唯一編譯錯誤,只有VS似乎將它視爲錯誤。 –

+0

但它是一個錯誤... –

+0

是的,這就是爲什麼你的答案確實解決了錯誤。 –

0

我假設的目的:

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

是把用戶的標準輸入輸入y中的價值。如果是這樣,你應該只是做:

cin >> y;