2013-02-18 19 views
-1

我在編程任務時遇到了問題。我需要計算並聯和串聯電路的總電阻值。我有串聯電路的功能,但我的問題是,當我嘗試計算並聯電路的總電阻時,我的返回值爲1。我怎麼能解決任何建議,這並行電路

// project.cpp : Defines the entry point for the console application. 
    // 

    #include "stdafx.h" 
    #include <iostream> 
    #include <math.h> 

    using namespace std; 

    void menu() 
    { 
     cout <<"\t\t\tLab 2 Menu Driven Algorithms" << endl; 
     cout <<"\t\t Calculating Parallel and Series Resistance" << endl; 
     cout <<"1)\tSeries" << endl; 
     cout <<"2)\tParallel" << endl; 
     cout <<"3)\tQuit" << endl; 
    } 

    int series(int& num, int& sum) 
    { 
int answer; 
num = 0; 
sum = 0; 

do 
{ 
    cout << "Enter Resistor " << num+1 << " value, 0 to calculate: "; 
    cin >> answer; 
    cout << endl; 

    sum = sum + answer; 

    num++; 
} 
while(answer != 0);  

return sum; 
    } 

    double parallel (int& num, double& sum) 
    { 
double answer; 
num = 0; 
sum = 0.0; 
int counter = 0; 

do 
{ 
    cout << "Enter Resistor " << num+1 << " value, 0 to calculate: "; 
    cin >> answer; 
    cout << endl; 
    counter++; 

    sum = (1/answer) + sum; 
    cout << sum << endl; 

    num++; 
} 
while(answer != 0); 

return sum; 
    } 




    int main() 
    { 
char choice; 
int num = 0; 
int sum = 0; 
double sum2 = 0.0; 

menu(); 

cout <<"\n\nPlease enter a value from the menu: "; 
cin >> choice; 
cout << endl; 

while (choice != '3' && choice != 'q' && choice != 'Q') 
{ 


switch(choice) 
{ 
    case '1': cout << "Calculating Series Resistance" << endl; 
       cout << "The series resistance for the " << num-1 << " resistors is: " << series(num, sum) << " Ohms\n"; 
       system("pause"); 
       break; 
    case '2': cout << "Calculating Parallel Resistance" << endl; 
       cout << "The parallel resistance for the " << num-1 << " resistors is: " << parallel(num, sum2) << " Ohms\n"; 
       system("pause"); 
       break; 
    default: break; 

} 

system("cls"); 

menu(); 

cout <<"\n\nPlease enter a value from the menu: "; 
cin >> choice; 
cout << endl; 


} 
system("pause"); 

return 0; 
    } 
+3

你期待什麼?當您輸入'0'作爲'answer',然後將'1/answer'加到'sum',**當然**將會是無限的。 – us2012 2013-02-18 20:00:51

+3

請擺脫[系統(「暫停」)](http://www.gidnetwork.com/b-61.html)。我差點跑過程序在我的一臺機器上測試它,並且該機器上的「暫停」命令暫停了我的核反應堆上的冷卻系統。 – 2013-02-18 20:02:31

+0

@DavidSchwartz哦,廢話,對我來說已經太遲了。 – 2013-02-18 20:03:47

回答

1

你可能想通過這種方式重寫parallel()函數內部循環,讓你永遠不會處理的0值(在這種情況下會導致被零除) :

cout << "Enter Resistor " << num+1 << " value, 0 to calculate: "; 
cin >> answer; 
cout << endl; 

while (answer != 0);  
{ 
    counter++; // NOTICE: This is never used for computation... 

    sum = (1/answer) + sum; 
    cout << sum << endl; 

    num++; 

    cout << "Enter Resistor " << num+1 << " value, 0 to calculate: "; 
    cin >> answer; 
    cout << endl; 
} 

counter變量從未被用於計算的,所以我想你可以擺脫它。

另請注意,即使series()內部的循環也存在類似的問題,儘管您從不引起零除的事實並不會使其可見。

+0

+1 - 我認爲你應該仍然保留原來的公式:)。 – us2012 2013-02-18 20:06:54

+0

@ us2012:哎呦。我從錯誤的函數複製了它:-)修正了,謝謝。 – 2013-02-18 20:08:40