본문 바로가기
C

문자열 배열 연습 3

by KWONE 2024. 5. 29.

  
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int i, max = 0;
int index=0;
int array[10];
int freq[10] = { 0 };
printf("0에서 9까지의 정수를 입력하시오: ");
for (i = 0;i < 10;i++) {
scanf("%d", &array[i]);
}
for (i = 0;i < 10;i++) {
++freq[array[i]];
}
for (i = 0;i < 10;i++) {
if (freq[i] > max) {
max = freq[i];
index = i;
}
}
printf("0~9중 가장 많이 나온수는 %d이고 %d번 나왔습니다.", index, max);
return 0;
}

위 코드를 배열을 인수로 사용하는 함수를 정의하여 만들어보았다.


  
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void frqtest(int[], int n);
int main(void) {
int i, x[10]; //x 는 입력값을 저장할 변수
printf("0 에서 9 까지의 정수를 입력하시오.\n");
for (i = 0; i < 10; i++) {
scanf("%d", &x[i]); // 정수 0~9 를 입력
if (!(x[i] >= 0 && x[i] <= 9)) { // 0~9 가 아니면 다시 입력
printf("다시 입력 (0 ~ 9) : ");
--i;
}
}
frqtest(x, 10);
return 0;
}
void frqtest(int x[], int n) {
int freq[10] = { 0 }; //입력한 변수 x 값의 빈도수를 저장할 변수
int i, index, max = 0;
//여러 문장
for (i = 0; i < 10; i++) {
++freq[x[i]]; // 입력된 숫자에 해당하는 빈도수를 증가시킴
}
// 가장 빈도수가 높은 수와 그 빈도수 찾기
for (i = 0; i < 10; i++) {
if (freq[i] > max) {
max = freq[i]; // 가장 빈도 수가 높은 것을 max에 저장
index = i; // 가장 많이 나온 수를 index에 저장
}
}
// 빈도수 출력
for (i = 0; i < 10; i++) {
printf("\n%d의 수는 %d번 나왔습니다.\n", i, freq[i]);
}
// 가장 많이 나온 수와 빈도수 출력
printf("\n0 ~ 9 중 가장 많이 나온 수는 %d이고, %d번 나왔습니다.\n", index, max);
}

이차원 배열을 함수를 통해 인수를 전달할때에는 

반환형 함수이름(이차원배열[][값],rowsize,colsize)이런식으로 이차원배열의 첫번째 대괄호의 값을 제외한 모든값을 기술해줘야한다.

예시


  
#include <stdio.h>
double sum(double data[][3], int, int);
//2차원배열값을모두더하는함수원형
void printarray(double data[][3], int, int);
//2차원배열값을모두출력하는함수원형
int main(void)
{
int i = 0;
//4 x 3 행렬
double x[][3] = { {1, 2, 3}, {7, 8, 9}, {4, 5, 6}, {10, 11,
12} };
int rowsize = sizeof(x) / sizeof(x[0]);
int colsize = sizeof(x[0]) / sizeof(x[0][0]);
printf("2차원배열의자료값은다음과같습니다.\n");
printarray(x, rowsize, colsize);
printf("2차원배열원소합은%.3lf 입니다.\n",sum(x, rowsize, colsize));
return 0;
}
double sum(double data[][3], int rowsize, int colsize)
{
int sum=0;
for (int i = 0;i < rowsize;i++) {
for (int j = 0;j < colsize;j++) {
sum += data[i][j];
}
}
return sum;
}
void printarray(double data[][3], int rowsize, int colsize)
{
for (int i = 0;i < rowsize;i++) {
printf("%d행 원소 : ", i+1);
for (int j = 0;j < colsize;j++) {
printf(" x[%d][%d] = %5.2lf ",i,j,data[i][j]);
}
printf("\n");
}
}

 

'C' 카테고리의 다른 글

포인터 연습 예제1  (0) 2024.06.03
문자열 배열 연습 4  (0) 2024.05.29
문자열 배열 연습2  (0) 2024.05.28
문자열 배열 연습1  (0) 2024.05.28
문자열 배열 출력  (0) 2024.05.28