wonjachocho   6년 전

코드를 제출하면 출력초과가 뜹니다ㅜㅜ

비주얼스튜디오 사용하는데 거기선 잘 돌아가는 코드거든요...ㅜ

while안의 조건을 아래처럼 바꿔도 오류가 나네용..
in!='\n'  ->출력초과
in!=EOF ->틀렸습니다
in!='\0' -> 출력초과

이렇게요ㅠㅠㅠ

우선 다른 방법으로 풀긴했습니다...ㅜㅜ

질문 요약하면
1.왜 아래 코드는 안되는 건지 
2.while문 안 조건을 위처럼 바꿔도 왜 안되는지

궁금하네요ㅠㅠ
부탁드립니다~!

gunwookim   6년 전

EOF를 받을때까지하라고하니까 in = EOF 이여야 합니다.

왜냐하면 마지막에 그냥 입력받고 그냥 공백으로 끝날수도 있기 때문입니다.('\n'이나'\0'은 안됨)

그리고  for문을 10번을 돌리셔야지 9번만 돌렸습니다.

gunwookim   6년 전

어 지금 바꿨네요

djm03178   6년 전

질문 검색을 누르면 똑같은 질문들과 그에 대한 답변을 수십 개 볼 수 있습니다.

Green55   6년 전

입력 마지막에는 기본적으로 \n이 주어지고, 이 문제는 항상 한 문장만 입력으로 들어오므로 이 문제는 \n를 감지하는 방식으로도 풀 수 있습니다.

위 코드의 문제는 10개의 문자를 입력 받고 나서 한번씩만 \n인지 확인하는게 문제입니다.

10의 배수번째 글자가 운 좋게 \n이라면 while을 탈출하겠지만,

보통의 경우는 이미 \n를 한참 전에 입력을 받고 이미 입력이 끝나고 getchar을 실행해 in에 EOF가 저장되있으므로 while을 탈출하지 못합니다.

반면에 EOF를 감지하는 방식으로 짜신건 이미 입력이 끝났으면 getchar을 몇번 하던지 계속 EOF가 들어오므로,

10글자를 받고 나서 EOF를 확인하는 방법을 써도 통과 가능합니다.

wonjachocho   6년 전

다들 감사합니다~!!!! 덕분에 해결햇습니다!!ㅜㅜ

댓글을 작성하려면 로그인해야 합니다.