드디어 배열의 마지막 문제다. 이번 주의 마지막이라는거지, 다음 주에는 또 어떤 어려운 문제가 나올지 모르겠다ㅎㅎ. 이번 주는 그나마 실습 문제들이 쉬워서 모든 문제들을 빠르게 풀 수 있었지만, 점점 어려워지는게 느껴진다.
벌써부터 포인터 다루기가 두렵다..
그럼 마지막 문제를 보자.
다시 한 번 0이 입력될 때까지~~~의 문제가 포함되었다. 그 부분은 이제 많이 익숙하니 패스하고, 가장 큰 수와 가장 작은 수를 보자.
가장 큰 수와 가장 작은 수라고 했으니, 변수 max와 min이 필요할 것 같다.
int max;
int min;
여기서 중요한게, 배열을 모두 입력 받으면, max와 min 변수의 값을 초기화한 상태에서 비교해야 한다는 것이다. 즉, ary라는 배열에 값들이 입력되면, max와 min 변수 둘다 ary[0] 으로 초기화해줘야 한다는 말이다.
max=ary[0];
min=ary[0];
그 다음에 비교를 해줘야 한다.
if(max<ary[j]){
max=ary[j];
}
if(min>ary[j]){
min=ary[j];
}
핵심적인 부분은 코딩을 완료했으니 손코딩 필기를 보도록 하자.
마지막으로 최종 코드를 보자:
#include <stdio.h>
int main(void)
{
int ary[30], i=0, num, max, min, length=0;
while(1){
scanf("%d", &num);
if(num==0){
max=ary[0];
min=ary[0];
for(int j=1;j<length;j++){
if(max<ary[j]){
max=ary[j];
}
else{
continue;
}
}
for(int j=1;j<length;j++){
if(min>ary[j]){
min=ary[j];
}
else{
continue;
}
}
break;
}
else{
ary[i]=num;
i++;
length++;
}
}
printf("%d %d", max, min);
return 0;
}