0

我几乎完成了所有作业,但我要做的最后一部分是编写一个程序,该程序将从名为“quad.txt”的文本文件中读取一些值,并使用二次公式计算根,然后输出值. 实验室的第一部分是在一个函数 main 中完成这一切。这很好用。但是,现在我被要求编写三个单独的函数:一个计算判别式 (b^2 -(4*a*c)) 并根据判别式的值返回字符串值(正、零或负) ,另一个将根据上面返回的字符串值计算实际的根和输出,最后是 main 函数,它将打开文件并运行其他两个函数。请参阅下面的代码,但我卡住的地方是我无法弄清楚如何从函数 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;
}
4

1 回答 1

0

这样做的方法是从磁盘返回一个 std::string,将其作为参数传递给显示,并使用 == 将其与设置值进行比较。

例如:

#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);
}
于 2012-05-25T03:34:48.027 回答