2012-05-25 42 views
0

我幾乎完成了我的所有作業,但最後一部分我要做的是創建一個程序,它將從名爲「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

要做到這一點,從光盤返回的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); 
} 
+0

這就是我的想法,但是我的教授列出這在分配表:「創建一個函數來計算判別和返回的話:‘積極的’,‘零’或基於條件的「負面」。「你會推薦我做什麼來返回一個字符串值(它甚至可能嗎?)?我更喜歡,而不是僅僅被告知該做什麼,而是指向我可以閱讀和學習如何做到這一點的方向,因爲我對C++還很陌生。 –

+0

@BrianTucker從光盤()返回一個std :: string。編輯我的答案(對不起,我的閱讀不好)。 – Lalaland

+0

太棒了。我會給這個鏡頭然後回報! –

相關問題