2011-02-23 6 views
1

저는 Objective C를 가르치기 시작했습니다. 간단한 콘솔 기반 계산기로 속이고있었습니다. 시작하려면 사용자에게 어떤 작업을 수행 할 것인지 묻습니다. 두 개의 숫자로 해당 작업을 수행 한 다음 계산 된 결과를 인쇄합니다.ObjC : scanf가 do/while 루프를 생략했습니다.

그 부분은 모두 잘 작동하는 것처럼 보입니다. 구현하려고하는 다음 부분은 더 이상 필요하지 않다고 결정할 때까지 사용자가 계산을 계속할 수있게하는 것입니다. 이 문제에 접근하려는 나의 생각은 사용자가 scanf()를 통해 'y'또는 'no'를 통해 계속하기를 원하는지 확인하기 위해 검사가 끝날 때 do/while 루프 안에 계산기 실행을 넣은 다음에 확인하십시오. 사용자가 응답하도록 선택한 것을 확인하십시오. 첫 번째 단계가 끝나면 scanf()를 통한 입력 요청이 발생합니다. 그냥 무시되고 프로그램이 종료됩니다.

내가 도움이되기를 바랐다. 나는 문제 해결, 온라인 조사 (scanf()와 함께 공백 문제에서 발견 한 것)를 통해 최선을 다해 최선을 다했지만 도움이되지 않았다. , 그리고 일부 추측 그러나 나는 현재까지 실패했습니다. 아래는 내 코드의 주요 섹션입니다.

int main (int argc, const char * argv[]) { 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 


    float answer; 
    char op,repeat; 
    NSLog(@"Welcome to my sexy calculater, (_(_)!!"); //don't mind me being weird 

    Calculater *deskCalc; 
    deskCalc=[[Calculater alloc] init]; 

    do 
    { 

     [deskCalc clear];//clear calc 

     op =[deskCalc getOperator]; //get +,-,*,or/ 
     [deskCalc getNumbers]; //get two numbers 

     [deskCalc calculate: op]; 
     answer=[deskCalc accumulater]; 

     NSLog(@"Your answer is %f!", answer); 


     NSLog(@"Would you like to calculate something again(y/n)?"); 
     scanf("%c",&repeat); 
     //NSLog(@"You typed: %c", repeat); 

    } while (repeat=='y'); 

    [deskCalc release]; 

    [pool drain]; 
    return 0; 
} 

미리 도움을 청하십시오. 충분한 정보를 제공하지 못하면 사과드립니다! 알려 주시면 기꺼이 더 제공 할 것입니다. 다시 한 번 고마워!

답변

0
당신은 아마 당신은 사용자가 'y'를 입력 한 후() 표준 입력에서의 줄 바꿈을 읽어는 scanf을 보장하기 위해 몇 가지 추가 작업을 할 필요가, 'N', 또는 무엇이든 Scanf skips every other while loop in C

에서보고 싶은데

enter 키를 누르기 전에 누르는 다른 키 스트림.

이 다른 게시물은 관련 보인다 Why is scanf() causing infinite loop in this code?

+0

감사 빌 - 내 초기 가정이 잘못하고 실제로 흰색 간격 문제였다 - 귀하가 제공하는 링크가 저를 더 잘 이해할 수있었습니다. 내 기술이 향상됨에 따라 scanf를 피할 수 있기를 기대합니다. 다시 한 번 감사드립니다! – Kevin

관련 문제