2015-02-02 2 views
-1

내 코드에 어떤 문제가 있습니까? 적절한 나이를 표시하지 않습니까? 예 : 내 생년월일로 1990을 입력하면 내 연령으로 25가 표시되지만 1025는 표시됩니다.C++ 나이가 제대로 표시되지 않습니다.

#include <iostream> 

int main() 
{ 

    long unsigned x, year; 
    long unsigned z; 
    year = 2015; 
    std::cout << "Year of Birth: "; 
    std::cin.get(); 
    std::cin >> x; 
    std::cin.get(); 
    z = year - x; 
    std::cout << "Your age is " << z << std::endl; 
    std::cin.get(); 
    std::cout <<" /n"; 
    return 0; 

} 
+5

문자 그대로 'std :: cin.get();'은 항상 필요하지 않으며, 첫 번째 것은 오류의 원인입니다. 이러한 함수 호출을 모두 제거하면 원하는대로 프로그램이 작동합니다. – druckermanly

+2

user2899162의 코멘트를 보완하기 위해서 : 첫 번째'.get()'은 입력 스트림에서'1'을 제거하므로'x'는'990' => 2015 - 990 = 1025입니다. 그렇게하면 오류를 훨씬 빨리 찾을 수 있습니다. – Zeta

+2

개행 문자는'/ n'이 아니라'\ n'입니다. –

답변

2

제거 언급 @ user2899162로 std::cin.get()의 모든 인스턴스 및 /n는 새로운 라인을 인쇄하지 않습니다, \n는 않습니다.

편집 코드 :

#include <iostream> 

int main() 
{ 

    long unsigned x, year; 
    long unsigned z; 
    year = 2015; 
    std::cout << "Year of Birth: "; 
    std::cin >> x; 
    z = year - x; 
    std::cout << "Your age is " << z << std::endl; 
    std::cout <<"\n"; 
    return 0; 
} 

당신이 모르는 수술 후 변수의 값을 인쇄하여, 자신이 그런 사소한 오류를 제거하기 위해 그것에게 포인트를 확인하시기 바랍니다.

1

cin.get();line:12입니다.

cin.get();은 사용자가 키를 치고 나머지 프로그램에 대해서만 실행을 계속할 때까지 화면을 유지합니다.

그래서 사용자가 출생 연도로 1992를 입력하면 cin.get()에서 첫 번째 키보드 히트 '1'이 소비되고 cin>>x은 992 만 저장됩니다.

솔루션 : 는 cin.get()

건배

를 제거
0

다른 사람이 문제 를 해결하고 줄 바꿈을 위해 당신은 또한 표준 : ENDL을 사용할 수 있습니다 표준 : cin.get()를 제거하기 이전에 대답 것처럼.

관련 문제