C++ C++;传递函数';将结果转换为另一个函数
我曾尝试在线查看资源,但似乎无法将某个函数的结果传递到第二个函数。我编写了一个程序来求解二次公式,需要使用判别式(在第一个函数CalculatedDescriminant中返回)作为第二个函数(二次公式)的参数。我怎样才能解决这个问题? 提前谢谢C++ C++;传递函数';将结果转换为另一个函数,c++,function,quadratic,C++,Function,Quadratic,我曾尝试在线查看资源,但似乎无法将某个函数的结果传递到第二个函数。我编写了一个程序来求解二次公式,需要使用判别式(在第一个函数CalculatedDescriminant中返回)作为第二个函数(二次公式)的参数。我怎样才能解决这个问题? 提前谢谢 #include <iostream> #include <cmath> using namespace std; double calculateDiscriminant(double a, double b, doub
#include <iostream>
#include <cmath>
using namespace std;
double calculateDiscriminant(double a, double b, double c) {
double discriminant;
discriminant = pow(b,2) - (4 * a * c);
return discriminant;
}
void quadraticFormula(double discriminant, double a, double b, double c) {
double result1;
double result2;
double result3;
double discriminant = calculateDiscriminant(double a, double b, double c); //I feel my problem lies here
if (discriminant > 0) {
result1 = (-b + sqrt(discriminant))/(2 * a);
result2 = (-b - sqrt(discriminant))/(2 * a);
cout << "There are 2 solutions." << endl;
cout << "The solutions are: " << result1 << " and " << result2;
}
else if (discriminant == 0) {
result3 = (-b)/(2 * a);
cout << "There is 1 solution." << endl;
cout << "The solution is: " << result3;
}
else if (discriminant < 0) {
cout << "There is no solution.";
} }
int main() {
double userInput1;
double userInput2;
double userInput3;
double discriminant;
cout << "Please enter the values of a, b, and c: " << endl;
cin >> userInput1 >> userInput2 >> userInput3;
calculateDiscriminant(userInput1, userInput2, userInput3);
quadraticFormula(discriminant, userInput1, userInput2, userInput3);
return 0; }
#包括
#包括
使用名称空间std;
双计算描述(双a、双b、双c){
双重鉴别;
判别式=pow(b,2)-(4*a*c);
返回判别式;
}
无效二次公式(双判别式、双a、双b、双c){
双重结果1;
双重结果2;
双重结果3;
double discriminant=calculatedDescriminant(double a,double b,double c);//我觉得我的问题就在这里
如果(判别式>0){
结果1=(-b+sqrt(判别式))/(2*a);
结果2=(-b-sqrt(判别式))/(2*a);
cout您将声明函数的语法与调用函数的语法混为一谈。但是,这些是完全不同的事情,试试这个
double discriminant = calculateDiscriminant(a, b, c);
这样考虑一下,当你是一个函数时,你必须告诉编译器所有的类型,所以
double calculateDiscriminant(double a, double b, double c) {
告诉编译器,calculateDescription
是一个带有double
参数的函数,该参数还返回一个double
。现在您已经告诉编译器,您不需要每次调用该函数时都重复这些信息,所以只需
calculateDiscriminant(a, b, c)
是调用函数所需的全部。奇怪的是,在程序中的每个其他函数调用中都正确地实现了这一点,所以我不确定为什么要尝试以不同的方式执行
您还有一些其他错误。在main
中
double discriminant;
cout << "Please enter the values of a, b, and c: " << endl;
cin >> userInput1 >> userInput2 >> userInput3;
calculateDiscriminant(userInput1, userInput2, userInput3);
quadraticFormula(discriminant, userInput1, userInput2, userInput3);
应该是这个吗
cout << "Please enter the values of a, b, and c: " << endl;
cin >> userInput1 >> userInput2 >> userInput3;
quadraticFormula(userInput1, userInput2, userInput3);
void quadraticFormula(double a, double b, double c) {
您在求积公式
函数中计算判别式,因此也不需要将其作为参数传递
你应该从逻辑上考虑函数参数。一个计算二次公式的函数需要三个参数,即二次方程中三项的系数。如果你发现自己写了一个包含四个参数的二次公式函数,你就做错了。这是简单的逻辑,与此无关H+C++,
void quadraticFormula(double a, double b, double c) '
//你不需要第四个参数
{
double result1;
double result2;
double result3;
double var1=a; //here
double var2=b; //here
double var3=c; //here
//将参数中的值指定给变量
`double discriminant1=calculateDiscriminant(var1,var2,var3);`
//只需将值传递给函数
if(鉴别器1>0){
结果1=(-var2+sqrt(discriminant1))/(2*var1);
结果2=(-var2-sqrt(discriminant1))/(2*var1);
你知道如何调用函数吗?discriminant=calculateDescription(userInput1,userInput2,userInput3)
查看你的main
函数以及函数的调用方式,并将其与你怀疑的行进行比较。你看到函数调用方式的区别了吗?使用这样的全局变量是非常糟糕的做法。请不要这样做!@doomista,你也可以这样做。我编辑了代码请不要发布只有正确的代码。有用的部分是解释什么需要更改以及为什么需要更改,因为这将有助于防止将来出现问题!@JVApen,明白你的意思。我将编辑它@JVApen,完成了
`double discriminant1=calculateDiscriminant(var1,var2,var3);`
if (discriminant1 > 0) {
result1 = (-var2 + sqrt(discriminant1))/(2 * var1);
result2 = (-var2 - sqrt(discriminant1))/(2 * var1);
cout << "There are 2 solutions." << endl;
cout << "The solutions are: " << result1 << " and " << result2;
}
else if (discriminant1 == 0) {
result3 = (-var2)/(2 * var1);
cout << "There is 1 solution." << endl;
cout << "The solution is: " << result3;
}
else if (discriminant1 < 0) {
cout << "There is no solution.";
} }