2015-06-14 48 views
-1

我想创建一个程序,它使用2个void函数来解决二次方程 (Ax²+ Bx + C = 0):一个插入A,B,C的值,第二个用于求解方程。这是我做过什么:无效函数(C++)

#include <iostream> 
#include <math.h> 

using namespace std; 

void add_nmbr(int a, int b, int c){ 

    int *pa,*pb,*pc; 
    cout << "Entrer le nombre A " <<endl; 
    cin >> a; 
    cout << "Entrer le nombre B " <<endl; 
    cin >> b; 
    cout << "Entrer le nombre C " <<endl; 
    cin >> c; 
    pa = &a; 
    pb = &b; 
    pc = &c; 
    cout << a <<"x2 + "<<b<<"x + "<<"c = 0"<<endl; 

} 

void resoudre(int a,int b, int c){ 

    double delta; 
    double x1,x2; 
    delta= b*b-4*a*c ; 

    if (delta<0){ 
     cout << "Pas de solution !"<<endl; 
    }else{ 
     x1=(-b-(sqrt(delta)))/(2*a); 
     x2=(-b+(sqrt(delta)))/(2*a); 
    } 
    cout << a <<"x2 + "<<b<<"x + "<<"c = 0"<<endl; 
    cout << "la solution est : " << x1 << endl; 
    cout << "la solution est : " << x2 << endl; 
} 

int main() 
{ 
    int a,b,c; 

    add_nmbr(a,b,c); 
    resoudre(a,b,c); 

    return 0; 

} 
+2

分你需要回到你的课本/参考和了解的传递参数的不同方式(按价值计算,参考和指针)。 – Mat

+0

那么问题是什么? – ChrisD

回答

0

在声明函数像void add_nmbr(int a, int b, int c)你是按值,这意味着您传递的值复制到函数传递参数。您可以更改add_nmbr中的值a,但该值保留在该函数内。在你的情况下,函数main中的变量a保持未初始化。

resoudre同样的事情。要修复它,你可以使用reference,像这样

void add_nmbr(int &a, int &b, int &c) {...}  
+0

谢谢你的工作, –

0

看看这个;

void add_nmbr(int& a, int& b, int& c){ 

    cout << "Entrer le nombre A " <<endl; 
    cin >> a; 
    cin.ignore(); //Use it after cin because of you hitting enter after getting the value. 
    cout << "Entrer le nombre B " <<endl; 
    cin >> b; 
    cin.ignore(); 
    cout << "Entrer le nombre C " <<endl; 
    cin >> c; 
    cin.ignore(); 

    cout << a <<"x2 + "<<b<<"x + "<<"c = 0"<<endl; 
} 

但是,是的,你应该尝试通过refence和价值的电话读取。

+0

谢谢你先生的工作 –

0

为什么你不使用参考?
就像那个

void add_nmbr(int& a, int& b, int& c) 
{ 
    cout << "Entrer le nombre A " << endl; 
    cin >> a; 
    cout << "Entrer le nombre B " << endl; 
    cin >> b; 
    cout << "Entrer le nombre C " << endl; 
    cin >> c; 
    cout << a << "x2 + " << b << "x + "<<"c = 0"<< endl; 
} 
void resoudre(const int &a,const int &b, const int &c) 
{ 
    double delta; 
    double x1,x2; 
    delta= b*b-4*a*c ; 
    if (delta<0){ 
     cout << "Pas de solution !"<< endl; 
    }else{ 
     x1=(-b-(sqrt(delta)))/(2*a); 
     x2=(-b+(sqrt(delta)))/(2*a); 
    } 
    cout << a <<"x2 + "<< b << "x + "<< "c = 0"<< endl; 
    cout << "la solution est : " << x1 << endl; 
    cout << "la solution est : " << x2 << endl; 
} 


做的注意,你需要在一个测试,因为你用0

+0

谢谢你先生... –