空函数 (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。
我想创建一个求解二次方程的程序 (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。