5.2 배열의 예제및 풀이 #1 [doc] [smts]
다음과 같은 예제를 배열을 이용하여 풀어 보자.
|
먼저 다섯 걔의 float형 값을 갖는 배열을 선언해야 한다.
float fa[5]; |
그 다음 사용자로부터 입력 받은 수를 저장하는 반복문을 작성해야 한다.
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-221.54.7-123.456fa[0] : 11.000000fa[1] : -22.000000fa[2] : 1.500000fa[3] : 4.700000fa[4] : -123.456001 |
이제 사용자가 입력한 숫자들 중 최대값을 찾는 알고리듬을 다음과 같이 고안해 보자. 최대값을 저장할 변수를 fmax로 선언한다.
float 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-221.54.7-123.456The maximum value is 11.000000. |
이 프로그램을 조금만 고치면 최소값을 출력하도록 할 수 있다. 직접 수정해서 결과를 확인해 보기 바란다.
'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글
C/C++ 함수 예제 (0) | 2015.06.09 |
---|---|
C/C++ 배열의 예제 및 풀이 #2 (0) | 2015.06.08 |
C/C++ 제어문 연습 문제 (0) | 2015.05.26 |
3장 연산자 연습 문제 (0) | 2015.05.26 |
C++에서 함수의 기본값 인자 (default parameter) (0) | 2015.05.26 |