我差不多完成了所有的功课,但我要做的最后一部分是创建一个程序,它将从一个名为“quad.txt”的文本文件中读取一些值,并用二次公式计算根,然后输出值。实验的第一部分是在一个函数中做到这一点,主要是。这很好。但是,现在我被要求写三个单独的函数:一个计算判别式(b ^ 2 - (4 * a * c))并根据判别式的值返回一个字符串值(正,零或负) ,另一个将根据上面返回的字符串值计算实际的根和输出,最后是主函数,它将打开文件并运行另外两个函数。请参阅下面的代码,但是我遇到的问题是我无法弄清楚如何从函数disc()返回一个字符串,然后获取函数display()来调用返回的字符串值并输出正确的数据。到目前为止,这是我的代码:
以下是我的quad.txt文件quad.txt
的链接//Brian Tucker
//5.23.2012
//Lab 6 Part1
//Quadratic Formula from text file
#include <iostream>
#include <fstream>
#include <cmath>
#include <iomanip>
#include <cstdlib>
#include <conio.h>
#include <string>
using namespace std;
int a, b, c; //sets up vars
double r1, r2;
string disc(){
if((pow(b,2) - (4*a*c) > 0)){ //determines if there are two roots and outputs
return positive;
}
else if((pow(b,2) - (4*a*c) == 0)){ //determines if there is a double root
return zero;
}
else if((pow(b,2) - (4*a*c) < 0)){ //determines if there are no roots
return negative;
}
}
void display(string data){
r1=((-b)+sqrt(pow(b, 2)-(4*a*c)))/(2*a); //quadratic formula
r2=((-b)-sqrt(pow(b, 2)-(4*a*c)))/(2*a);
if(positive){
cout<<setw(3)<<"a="<<a; //outputting a, b, c
cout<<setw(3)<<"b="<<b;
cout<<setw(3)<<"c="<<c;
cout<<setw(7)<<"2 rts";
cout<<setw(5)<<"r1="<<r1;
cout<<setw(5)<<"r2="<<r2;
}
else if(zero){
cout<<setw(3)<<"a="<<a; //outputting a, b, c
cout<<setw(3)<<"b="<<b;
cout<<setw(3)<<"c="<<c;
cout<<setw(7)<<"Dbl rt";
cout<<setw(5)<<"r1="<<r1;
}
else if(negative){
cout<<setw(3)<<"a="<<a; //outputting a, b, c
cout<<setw(3)<<"b="<<b;
cout<<setw(3)<<"c="<<c;
cout<<setw(7)<<"No rts";
}
cout<<endl;
}
int main(){
ifstream numFile; //sets up the file
numFile.open("quad.txt"); //opens the file
while(numFile.good()){ //while there are still values in the file, perform the function
numFile>>a>>b>>c;
string result = disc();
display(result);
}
numFile.close();
getch();
return 0;
}
答案 0 :(得分:0)
执行此操作的方法是从光盘返回std :: string,将其作为参数传递给display,并使用==将其与设置值进行比较。
例如:
#include <string>
#include <iostream>
std::string valueFunction( int i)
{
if ( i >0 )
return "positive";
else
return "not positive";
}
void resultFunction( std::string data)
{
if (data == "positive")
std::cout<<"It was a positive number"<<std::endl;
else if (data == "not positive")
std::cout<<"it was not a positive number"<< std::endl;
}
int main()
{
int i = 453;
std::string result = valueFunction(i);
resultFunction(result);
}