pppp1923   5년 전

논리는 맞다고 생각되는데요..


i를 for문으로 돌릴때

i가 0일때 ox배열의 입력자체가 안되고 바로 val를 출력해버려서 0이 출력이됩니다..

i가 1이 될때부터는 입력이 잘되고 출력도 잘됩니다..


이전에 평균은 넘겟지 문제에서도 테스트 케이스를 입력하고 for문으로 테스트 케이스 만큼 반복하도록 코드를 짯을때는 잘되었는데

이번엔 무엇이문제인가 아무리 생각해봐도 모르겟네요.. ㅠㅠㅠ

알려주세요!!!

djm03178   5년 전

처음에 n을 입력받은 후 엔터를 칩니다. 하지만 그 때 cin에게 주어진 임무는 어떤 정수 하나를 읽는 것 뿐입니다. 그래서 그 뒤에 붙어있는 개행 문자(엔터)에는 cin이 관심이 없습니다.

그 다음 루프를 돌 때 getline에게 주어진 임무는 개행 문자가 나타날 때까지 문자열을 읽는 것입니다. 그런데 아까 cin이 처음에 처리하지 않은 개행 문자가 처음부터 보입니다. 그러니 getline은 여기까지가 자기에게 주어진 부분이라고 생각하고 아무것도 안 들은 문자열을 ox에 넣어주고 끝내버립니다.

그리고 ox의 크기가 80이면 길이가 80인 문자열을 입력받을 수 없습니다.

pppp1923   5년 전

cin을 입력할때 엔터키가 입력버퍼에 남아있어 엔터까지 입력을 받는 getline에 바로 \n이 들어가버려서 입력이 안되었던거군요


cin.ignore()로 입력버퍼를 비워주면서 해결했습니다 감사합니다!!

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