2012-05-16 5 views
2

일부 C++을 연습하면서 책에서 일부 코드를 실행했습니다. break seams와 함께 if 문을 조금 쓸 필요가 없습니다.if 문 입력 (cin)

if (! (cin >> dstep)) break;

이 솔기는 나에게 해킹이되어서 간단히 cin >> dstep을 사용하여 if 나 break가 프로그램을 잘 실행합니다. 이견있는 사람?

    int main() 
       { 
        using namespace VECTOR; 

        srand(time(0));  //seed random-number generator 
        double direction; 
        Vector step;  //creates default object 
        Vector result(0.0, 0.0); // 
        unsigned long steps = 0; 
        double target; 
        double dstep; 

        cout << "Enter target distance (q to quit): "; 

        while (cin >> target) 
        { 
         cout << "Enter step length: "; 
         if (!(cin >> dstep)) //if NOT inputing into dstep THEN break/means if INPUTING is TRUE, keep going and don't break out of loop 
          break; 
         //cin >> dstep // why not just use this? 
         while (result.magval() < target) 
         { 
          direction = rand() % 360; 
          step.set(dstep, direction, 'p'); //sets the values dstep and direction based on the form; in this case 'p' 
          result = result + step; 
          steps++; 
         } 
         cout << "After " << steps << " steps, the subject " 
          "has the following location:\n"; 
         cout << result << endl; 
         result.polar_mode(); 
         cout << " or\n" << result << endl; 
         cout << "Average outward distance per step = " 
          << result.magval()/steps << endl; 
         steps = 0; 
         result.set(0.0, 0.0); 
         cout << "Enter target distance (q to quit): "; 
        } 
        cout << "Bye!\n"; 

        cin.get(); 
        return 0; 
       } 
+0

'break'없이 '길이 입력'프롬프트에 대해 유효하지 않은 길이 (문자열 일 수 있음)를 입력하면 어떻게됩니까? – Naveen

+0

'Q'또는 'P'또는 ant int가 아닌 문자를 입력하면 주 루프가 종료되고 "bye"가 출력됩니다. –

답변

3

당신은 그렇지 않으면 무한 루프에 들어가기, 또는 입력이 잘못되면 그냥 잘못된 결과를 얻는 위험, 예외를 활성화 또는 모든 스트림의 입력 조작을 확인하거나 있습니다.

+0

도움말을 보내 주셔서 감사합니다. yea 지금 당장 나는 if break를 제거하고 간단한 cin >> dstep을 사용할 수 있다면 문법적인 것을 알고 싶다. 이 책은 입력 검증을 위해 "if not"를 사용하는 것처럼 보입니다. 그렇다면 너무 .. –