2015-02-03 4 views
-5

아마추어 질문 .... 내 코드는 사용자가 3 게이트를 선택할 수있는 논리 게이트 메뉴를 가지고 있습니다. 그런 다음 프로그램은 헤더 파일의 네임 스페이스를 찾고 out []에 저장 한 해당 게이트의 출력을 반환합니다. 게이트 출력 잘 작동하지만 스위치 케이스의 3 가지 선택이 끝난 후 그들을 인쇄 할 수 없습니다. 나는 그것의 자신의 함수 "void output()"에 넣으려고했으나 사용자가 두 번 더 게이트를 선택하기 전에 출력을 조기에 출력한다.스위치 케이스 후 조기 출력

아웃 Y 1 ~ 3 함께 인쇄해야하지만, 첫 번째 인쇄 사용자는 로직 입력을 입력 후 즉시

나는 문제가 당신이 menu 함수 내에서 output를 호출하기 때문에, 수 당신 반면 있다고 생각
#include <iostream> 
#include <iomanip> 
#include "lab3.h" 


using namespace std; 
using namespace Gates; 
void output(int o[]); 


int menu(int, int); 
int main() 
{ 

    int a; 
    cout << "Types of gates available:\n" 
     << "1) AND\n" 
     << "2) OR\n" 
     << "3) NAND\n" 
     << "4) NOR\n" 
     << "5) XOR\n"; 


    for(int i=0; i<3; i++) 
    { 
    cout << "\nSelect gate #" << i+1 << " (1 to 5) => "; 
    cin >> a; 
    menu(a, i); 
    } 
} 



int menu(int x, int j) 
{ 

int out[3]; 
int a, b; 
switch(x) 
{ 
case 1: 
    cout << "Enter two inputs for gate #" << j+1 << " (seperated by a space)  => "; 
    cin >> a >> b; // two inputs for gate 
    out[j] = Gates::AND(a, b); //store gate output in out1 (1 or 0) 
    break; 

case 2: 
    cout << "Enter two inputs for gate #" << j+1 << " (seperated by a space) => "; 
    cin >> a >> b; 
    out[j] = Gates::OR(a, b); 
    break; 

case 3: 
    cout << "Enter two inputs for gate #" << j+1 << " (seperated by a space) => "; 
    cin >> a >> b; 
    out[j] = Gates::NAND(a, b); 
    break; 

case 4: 
    cout << "Enter two inputs for gate #" << j+1 << " (seperated by a space) => "; 
    cin >> a >> b; 
    out[j] = Gates::NOR(a, b); 
    break; 

case 5: 
    cout << "Enter two inputs for gate #" << j+1 << " (seperated by a space) => "; 
    cin >> a >> b; 
    out[j] = Gates::XOR(a, b); 
    break; 
} 

output(out); 

return 0; 
} 

void output(int o[]) 
{ 
    cout << "\nOutputs => " << endl; 
    for(int i=0; i < 3; i++) 
    { 
     cout << setw(10) << "\ny"<< i+1 << " = " << o[i]; 
    } 
} 
+0

샘플 입력/출력을 제공 할 수 있습니까? –

+0

하나 이상의 switch-case 선택에 따라 출력을 표시하기위한 올바른 구문을 알고 싶습니다. – steeele

+0

@steeele _ "하나 이상의 switch-case 선택에 따라"_ 스위치 케이스를 루프로 실행해야합니다. 하나 이상의 가치가 선택되어야합니까, 아니면 제가 잘못 이해 했습니까? –

답변

2

아마도 for 루프 이후에 main 함수에서 호출되도록 의도했을 것입니다.

0

스토어 사용자로부터 입력 및 사용자 입력 후 메뉴의 함수를 호출

int a[3]; 
int out[3]; 
for(int i=0; i<3; i++) 
{ 
cout << "\nSelect gate #" << i+1 << " (1 to 5) => "; 
cin >> a[i]; 
menu(a[i],out i); 
} 
output(out); 

난 강력 디버거를 사용하거나 시작을위한 코드에서의 printf의 배치 중 하나를 자신의 코드 흐름을 연구하는 당신에게 추천 할 것입니다.

+0

메뉴를 작성할 때 (a [i], out i) 의미가 있었습니까 ?? – steeele

+0

코드에서 메뉴 함수에서 로컬 변수로 사용하고 메뉴에서 출력 함수를 호출 했으므로 작동하지만 main에서 출력을 호출하려면 결과를 main으로 저장하고 저장/인쇄하거나 배열을 전달해야합니다 출력 결과를 함수에 저장하고 main에 출력하는 예제를 보여줍니다. – Sridhar

+0

더 좋은 방법은 각 사례의 결과를 메뉴의 로컬 변수에 저장하고 그 결과를 main에 반환하고 반환 된 값을 루프 내부의 배열에 저장 한 다음 나중에 인쇄하는 것입니다. – Sridhar