2014-10-19 1 views
-1

두 분수를 더하거나 뺄 때 더하기 및 빼기 함수의 결과를 표시하려고합니다. 그러나 두 분수를 입력 할 때마다 결과가 표시되지 않습니다. 그냥 "계속하려면 아무 키나 누르십시오"행으로 바로갑니다. 나는 누군가가 저를 해결책에 인도 할 수 있는지 궁금 해서요. 나를 위해 일하는 것이 반드시 필요한 것은 아니지만 몇 가지 힌트가 큰 도움이 될 것입니다. 나는 내 코드를보고, 인터넷을 사용하여 리소스를 찾고, C++ 책을보고 약간의 도움을 얻어 언젠가 이것을 알아 내려고 노력 해왔다. 나는 디스플레이 기능에서 뭔가 잘못하고 있다고 확신한다. 시간 내 주셔서 감사합니다.표시 기능에 더하기 및 빼기 함수의 출력을 표시하려고합니다.

#include <iostream> 

using namespace std; 

void info(); 
void input (int ,int ,int ,int ,int , int,char, char); 
int add (int,int,int,int,int,int,char,char); 
int subtract(int,int,int,int,int,int,char, char); 
void display(); 

int main() 
{ int num1,den1,num2,den2,num_result, den_result; 
    char fraction_char; 
    char operation; 



info(); 
input (num1,den1,num2,den2,num_result,den_result,fraction_char, operation); 
add (num1,den1,num2,den2,num_result,den_result,fraction_char, operation); 
subtract(num1,den1,num2,den2,num_result,den_result,fraction_char,operation); 
display(); 

    return 0; 
} 

void info() 
{ cout<<"Please follow instructions carefully."<<endl; 
    cout<<"Enter your operation like 1/2 + 1/4"<<endl; 
    cout<<"You must enter a valid operation."<<endl; 
    cout<<"Enter % operator to stop the program (0/1 % 0/1)"<<endl; 

} 

void input (int num1,int den1,int num2,int den2,int num_result, int den_result,char fraction_char, char operation) 
{ cout<<"Please enter your operation."<<endl; 
    cin>>num1>>fraction_char>>den1>>num2>>fraction_char>>den2; 


} 

int add (int num1,int den1,int num2,int den2,int num_result,int den_result,char fraction_char, char operation) 
{ int addition_answer; 

    if(operation== '+') 
    { num_result = (num1*den2) + (num2*den1); 

     den_result = den1*den2; 
     addition_answer = num_result/den_result; 
    } 
    return addition_answer; 


} 

int subtract(int num1,int den1,int num2,int den2,int num_result,int den_result, char fraction_char, char operation) 
{ int subtraction_answer; 


    if (operation == '-') 
    { num_result = (num1*den2) - (num2*den1); 
    den_result = den1*den2; 
    subtraction_answer= num_result/den_result; 

    } 
    return subtraction_answer; 
} 



void display() 

{ 
    int num1,den1,num2,den2,num_result,den_result,fraction_char,operation; 
    int fraction_added = add (num1,den1,num2,den2,num_result,den_result,fraction_char,operation); 
    int fraction_subtracted = subtract(num1,den1,num2,den2,num_result,den_result,fraction_char,operation); 



    if (operation== fraction_added) 

    { 

    cout<<"Your answer is: "<<add; 
    } 

    else if (operation== fraction_subtracted) 
    { 
     cout<<"You answer is: "<<subtract; 
    } 
    add(num1,den1,num2,den2,num_result,den_result,fraction_char,operation); 
    subtract(num1,den1,num2,den2,num_result,den_result,fraction_char,operation); 
} 
+1

디스플레이에 초기화하지 않고 조작을 사용 중입니다. 또한 왜 어쨌든 디스플레이에서 계산을하려고합니까? display()에는 매개 변수가 필요합니다. – drescherjm

+0

답장을 보내 주셔서 감사합니다. 알아 냈습니다. :) –

답변

1

입력 기능은 cin에서 가져 오는 변수를 반환하지 않습니다. 이는 함수의 매개 변수를 값으로 전달하므로 main에서 변수 복사본을 가져 오지만 주 변수는 변경할 수 없기 때문입니다.

입력 기능이 주 변수를 변경할 수 있으려면 매개 변수를 변경해야 참조 또는 포인터로 전달할 수 있습니다.

cout 호출은별로 의미가 없습니다. 예를 들어, fraction_added에서 결과를 얻은 다음 그 결과를 출력하지 않는 것처럼 보입니다.

+0

조언 해 주셔서 감사합니다. 알아 냈습니다. :) –

관련 문제