45.8 심사문제 코드 틀린점
, Moon Heejoo님이 작성문의한 코드는 삭제합니다.
char s1[1001];
char* s2[1000] = { NULL, };
제가 작성한 45.8 심사문제 코드 입니다. the는 여섯번 출력이 되는데 count가 계산 되지 않습니다..ㅠㅠ 어느 부분이 잘못된 것인가요?
감사합니다.
(도장_ 관리자님이 수정함 - 원문 제출일: 2019년 9월 3일, 화요일, 오후 8:00)
Re: 45.8 심사문제 코드 틀린점
, 도장_ 관리자님이 작성Unit 45.2나 45.3의 예제 코드를 기반으로 응용해야 합니다.
예제 코드는 while 하나만 사용하고 있고, 심사문제도 while 하나로 충분합니다.
지금과 같은 방식으로 풀어도 됩니다. 이럴 때는 UNIT 6의 디버거 사용법을 참고해서 Visual Studio에서 F5 키로 실행하면 문제가 발생한 지점에서 프로그램이 멈추고, 변수의 값을 직접 살펴볼 수 있습니다.
조건문에 빨간색 X로 에러 위치가 표시되고, 아래 자동 창에서는 스크롤하면 변수를 살펴볼 수 있습니다. s2 배열이 [999]까지만 있고, i가 1000일 때 s2[1000]을 읽으려고 할 때 메모리를 읽을 수 없음을 알 수 있습니다. 이는 선언되지 않은 배열 범위를 읽으려고 시도했다는 뜻이고, 오류의 원인입니다.
s1, s2의 크기가 미스매치인 부분이 문제일 겁니다.
반복문을 두 번 반복해서 해결할 수 있지만, 효율적인 방법은 아닙니다.
반복문을 한 번만 사용해서 해결할 수 있는데, 두 번 반복하면 시간이 2배로 걸린다는 뜻입니다.
먼저 현재의 해법으로 문제 풀이를 시도하고
반복문을 하나로 줄이는 방식으로 접근하면 좋습니다.