空函数 (c++)

Void function (c++)

我想创建一个求解二次方程的程序 (Ax²+Bx+C=0) 使用 2 个无效函数:一个用于插入 A、B、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;

}

当您声明一个像 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) {...}    

看看这个;

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;
}

但是,是的,您应该尝试通过引用阅读调用和价值调用。

为什么不使用引用?
像那样 <pre></p> <pre><code>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; }


注意,你需要在 a 中进行测试,因为你除以 0。