[英]Void function (c++)
我想創建一個使用 2 個空函數求解二次方程(Ax²+Bx+C=0) 的程序:一個用於插入 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)
這樣的函數時void add_nmbr(int a, int b, int c)
您是按值傳遞參數,這意味着您將值的副本傳遞給函數。 您可以為a
更改add_nmbr
的值,但該值保留在函數內。 在你的情況下,函數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;
}
但是,是的,你應該嘗試通過引用和價值調用來閱讀。
為什么不使用引用?
像那樣
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; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.