다음과 같은 예제를 배열을 이용하여 풀어 보자.
C++의 배열에 사용자가 입력한 다섯 개의 float 형 데이터를 저장한 후 그것을 화면에 출력하라.
입력 받은 숫자들 중 가장 큰 최대값을 화면에 출력하라.
|
먼저 다섯 걔의 float형 값을 갖는 배열을 선언해야 한다.
그 다음 사용자로부터 입력 받은 수를 저장하는 반복문을 작성해야 한다.
float fi;
for(int k=0; k<5; k++) {
scanf("%f", &fi);
fa[k]=fi;
}
|
이 반복문에서 정수형 변수 k는 0,1,2,3,4 값에 대해서 반복을 수행하며 입력된 실수를 배열 fa에 저장하게 된다.
이제 다 입력 받은 데이터를 화면에 출력하는 것도 반복문을 사용하면 된다.
for(int k=0; k<5; k++) {
printf("fa[%d] : %f\n", k, fa[k]);
}
|
여기서 printf() 함수의 첫 번째 %d에는 인덱스가, %f 자리에는 배열의 k번째 요소가 출력이 된다.
전체 프로그램은 다음과 같다.
#include <stdio.h>
int main(void)
{
float fa[5];
float fi;
for(int k=0; k<5; k++) {
scanf("%f", &fi);
fa[k]=fi;
}
for(int k=0; k<5; k++) {
printf("fa[%d] : %f\n", k, fa[k]);
}
}
|
실행 예:
11
-22
1.5
4.7
-123.456
fa[0] : 11.000000
fa[1] : -22.000000
fa[2] : 1.500000
fa[3] : 4.700000
fa[4] : -123.456001
|
이제 사용자가 입력한 숫자들 중 최대값을 찾는 알고리듬을 다음과 같이 고안해 보자. 최대값을 저장할 변수를 fmax로 선언한다.
그리고 사용자가 처음 입력한 숫자를 fmax의 값으로 대입한 후 그 이후에는 새로 입력된 숫자가 이전에 저장된 fmax 값보다 클 경우 fmax 값을 갱신한다. 다섯 개의 숫자에 대해서 이 작업을 수행하면 마지막에 fmax 변수에는 가장 큰 값이 남아 있게 된다.
for(int k=0; k<5; k++) {
scanf("%f", &fi);
fa[k]=fi;
if (k==0) { // 첫 번째 데이터가 입력된 경우
fmax = fi;
} else { // 두 번째 데이터 이후
if (fi > fmax)
fmax = fi;
}
}
}
|
위에서 보면 if ~ else 제어문으로 첫 번째 데이터와 그 이후의 데이터를 구분했으며 k변수가 0이면 첫 데이터라고 판단한다. 반복문이 종료되면 fmax 변수에는 최대값이 저장되어 있으므로 그것을 출력하면 된다.
printf("The maximum value is %f.", fmax);
|
전체 프로그램은 다음과 같다.
#include <stdio.h>
int main(void)
{
float fa[5];
float fi;
float fmax;
for(int k=0; k<5; k++) {
scanf("%f", &fi);
fa[k]=fi;
if (k==0) {
fmax = fi;
} else {
if (fi > fmax)
fmax = fi;
}
}
printf("The maximum value is %f.", fmax);
}
|
실행 예:
11
-22
1.5
4.7
-123.456
The maximum value is 11.000000.
|
이 프로그램을 조금만 고치면 최소값을 출력하도록 할 수 있다. 직접 수정해서 결과를 확인해 보기 바란다.