Пустая функция (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;

}

-1

Решение

Когда вы объявляете функцию как void add_nmbr(int a, int b, int c) вы передаете параметры по значению, что означает, что вы передаете копию значения в функцию. Вы можете изменить значение внутри add_nmbr за a но это значение остается внутри функции. В вашем случае переменная a в функции main остается не инициализированным.

То же самое для resoudre, Чтобы исправить это, вы можете использовать reference, как это

void add_nmbr(int &a, int &b, int &c) {...}
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;
}

Но да, вы должны попытаться прочитать по вызову по референции и колл по значению.

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

[/ NOEDIT]
Обратите внимание, вам нужен тест в потому что вы разделены на 0.

0
По вопросам рекламы [email protected]