2013-02-18 4 views
-1

이 프로그래밍 할당에 문제가 있습니다. 병렬 및 직렬 회로의 총 저항 값을 계산해야합니다. 직렬 회로가 작동하지만 내 문제는 병렬 회로의 총 저항을 계산하려고 할 때 반환 값이 1입니다. # INF. 내가 해결할 수있는 방법에 대한 어떤 제안이병렬 회로

// 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

무엇을 기대 했습니까? Answer로'0'을 입력하고'sum'에'1/answer'를 추가하면 당연히 ** 무한이됩니다. – us2012

+3

[system ("pause")] (http://www.gidnetwork.com/b-61.html)을 제거하십시오. 나는 당신의 프로그램을 거의 내 컴퓨터에서 테스트 해 보았고, 그 기계의''pause' 명령은 나의 원자로의 냉각 시스템을 멈추게한다. –

+0

@DavidSchwartz 오, 쓰레기, 너무 늦었 어. –

답변

1
당신은 아마 당신이 (이 경우 0으로 나누기 발생) 0의 값을 처리하지 않습니다 있도록 parallel() 함수 내에서이 방법을주기를 다시 할

:

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으로 나눗셈을하지 않아도 표시하지는 않지만 비슷한 문제가 있습니다.

+0

+1 - 나는 여전히 원래 공식을 유지해야한다고 생각합니다 :). – us2012

+0

@ us2012 : 으악. 나는 잘못된 함수에서 복사 :-) 고정, 고마워. –