36.13 심사문제 어떻게 하나요?
, 서 영우님이 작성for (int i = 0; i < sizeof(numArr) / sizeof(int); i++) {
smallestNumber = numArr[0];
if (numArr[i] < smallestNumber)
smallestNumber = numArr[i];
else
smallestNumber = numArr[0];
}
먼저 smallestNumber를 numArr[0]으로 지정한후
numArr[i]가 smallestNumber보다 작다면
smallestNumber를 numArr[i]로 지정하도록 했습니다만
계속 맨 numArr[0]값만 나옵니다.
무엇이 잘못되었나요?
Re: 36.13 심사문제 어떻게 하나요?
, 도장_ 관리자님이 작성종이와 펜을 준비하고
테스트 케이스
20 40 10 50 30
에 대해서 로직을 분석해봅니다.
반복문에서 i = 0일 때
각 변수의 값을 차례대로 씁니다.
i = 1일 때
각 변수의 값을 차례대로 씁니다.
이렇게 하면 문제의 원인을 찾을 수 있습니다.
이를 좀 더 편하게 하는 방법은 UNIT 6에서 설명한 디버거를 이용하는 겁니다.
Visual Studio에서 중단점을 그림과 같이 설정하고, 조사식에서 각각의 값을 볼 수 있습니다.
해당 값을 종이에 메모해서 각 단계를 분석하면 현재 작성한 코드의 동작 방식을 이해할 수 있을 것이고, 문제가 되는 부분을 수정할 수 있을 겁니다.