C++ 질문입니다!
조회수 506회
C++ 초급 배우고 있는 학생입니다.
0 ~ 9까지의 난수를 발생시켜 4행 3열짜리 2차원 배열을 만들어주는 함수를 작성했는데요, 이 배열에 출현한 숫자의 빈도수를 1차원 배열로 표현하고 싶습니다.
2차원 배열에 0이 2번 등장하면 1차원 배열의 0번지를 2번 증가시키는 것처럼!
#include <iostream>
#include <iomanip> // setw()
#include <fstream>
#include <ctime> // rand(), time()
using namespace std;
// 기호상수, 전역
const int ROW = 4;
const int COL = 3;
// *** 함수의 원형 ***
void printArray(int num[][COL], int rowSize); // 2차원 배열 출력
void randomNumbers(int inumbers[][3], int rowSize); // 난수로 초기화
void randomCounts(int inumbers[][3], int size, int counts[]); // 빈도 계산
void printArray1(int x[], int from, int to); // 1차원 배열 출력
int main() //main
{
int rn[ROW][COL];
int counts[10] = {0, };
randomNumbers(rn, ROW);
printArray(rn, ROW);
randomCounts(rn, ROW, counts);
cout << endl << "빈도배열" << endl;
printArray1(counts, 0, 9);
} // main
// *********************** 함수 **************************
// 2차원 배열 출력
void printArray(int num[][COL], int rowSize)
{
cout << "==================" << endl;
for (int row = 0; row < rowSize; row++)
{
for (int col = 0; col < COL; col++)
cout << setw(5) << num[row][col];
cout << endl;
}
cout << "==================" << endl;
}
void randomNumbers(int inumbers[][COL], int rowSize)
{
srand((unsigned int)time(NULL));
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
inumbers[i][j] = rand() % 10;
}
}
}
void randomCounts(int inumbers[][COL], int size, int counts[])
{
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
for (int s = 0; s < 12; s++)
{
if (counts[s] == inumbers[i][j])
counts[s]++;
}
}
}
}
void printArray1(int x[], int from, int to)
{
// 인덱스 출력
for (int i = from; i <= to; i++)
cout << setw(5) << i;
cout << endl;
cout << " ";
// 구분자 출력
for (int i = from; i <= to; i++)
cout << "----+";
cout << endl;
// 배열 출력
for (int i = from; i <= to; i++)
cout << setw(5) << x[i];
cout << endl << endl;
}
여기서 빈도수를 계산해주는 randomCounts 함수가 문제입니다. 도와주시면 정말 감사드리겠습니다!
댓글 입력