거의 다 하셨는데, 한 가지 놓치신게 있습니다.
애초에 위에서 r 과 c를 입력받았죠? 이 때, 엔터를 치게되니(\n), 이것이 남은 채로 다음으로 넘어가, char[i][j]로 입력되어버립니다. (의도치 않은 상황)
의도하신 대로 입력을 받기 위해선, 정수 입력을 받은 후에도 cin.ignore()를 해주셔서, 버퍼에 들어있는 \n 이 녀석을 없애주셔야 합니다.
따라서, 꼭 이 문제 말고도, 정수형(또는 실수형)과 문자형을 입력받는 경우에는 항상 이 점을 유의해주세요! ( \n이 문자로 들어가버리는 실수 )
( 그럼, 문자열 이후에 정수형은 괜찮은가? => 문자열 입력 이후에도 \n이 버퍼에 남아있지만, 정수형은 숫자가 나올때까지 \n을 받지 않으므로 괜찮습니다. )
그럼 이제 입출력 이해를 돕기위해 위의 예시를 이용해보겠습니다. 자, 일단 정수형 이후, 따로 버퍼를 건드리지 않으셨기에, \n이 그대로 버퍼에 남아있습니다.
따라서, ('\n' 'W' 'B' ) ('W' '\n' 'B' ) ('W' 'B' '\n' ), 이렇게 9개가 입력되면서, 원했던 입력을 끝내기도 전에, for loop가 끝나게 됩니다.
출력)
WBW
BWB
그리고 두 번째 경우, ( \n W B ) W (\n B W ) B (\n W B), ( cin.ignore가 원치 않은 곳에서 실행되었습니다. )
1. '\n' 'W' 'B' 가 첫 행에 모두 입력된 후, cin.ignore()로 인해, 그 다음의 W가 들어오지 못하고(무시되어) 넘어갑니다.
2. \n B W 를 읽어오게 되고, 그 다음의 B를 무시하게 됩니다.
3. 그리고 \n W B를 입력받아서,
최종 출력이 말씀하신 것처럼
출력)
WB
BW
WB
처럼 나오게 됩니다.
입출력은 중요합니다! 단계별로 풀어보기에 입출력 파트가 있습니다. 이 부분을 공부하시다보면 자연스럽게 많이 배우실 수 있을 것이라고 생각합니다. 파이팅!
xorms86 3년 전
아직 입출력에대해 미숙한 초보입니다.
제가 getchar()에 대해 알고있는 점은 엔터가 입력될때까지 문자입력을 받는다 정도만 알고있습니다.
제 코드에서 입력으로
3 3
WBW //엔터
BWB //엔터
까지 치니 아직 입력 한줄이 더 남았는데
WBW
BWB 를 바로 출력하더라고요..
근데 이상한게 만약에 '\n' 를 포함해서 배열에 할당이 된다하면(제가 위에서 알고있던 개념이랑 달라서 가정한것)
배열의 공간이 총 9개인데
위에서는 8번째 입력을 하자마자 바로 종료가 되버립니다.
for문의 3*3번 반복해라 라는 조건에 관계없이 입력을 종료한거 같은데 이해가 안되네요..
아직 뭣도 모르는 버퍼랑 관련이있는거 같아서
cin.ignore()까지 써봤는데
3 3
WBW
BWB
WBW //엔터
를 치니
WB
BW
WB
이번엔 출력으로 이렇게 나와버립니다...
이도 저도 못하는 상황이라
제 수준을 좀 이해해주시고 쉬운 설명 부탁드립니다...