C++/문제풀이
[C++] 2차원 배열에서 최대, 최소값 구하기
year.number
2022. 6. 14. 19:41
실습 9-1
2차원 배열에서 최대, 최소값 구하기
[조건]
const int ROW = 4, COL = 3;
void printArray(int inumbers[][COL], int rowSize);
int Min, Max;
void findMinMax(int inumbers[][3], int rowSize);
최댓값, 최솟값을 저장하는 변수를 전역 변수로 지정
//
// main.cpp
//
// Created by yeonsu on 2022/06/14.
//
// 2차원 배열에서 최대, 최소값 구하기(4행 3열)
#include <iostream>
#include <ctime> //rand 함수
#include <iomanip>
const int ROW = 4, COL = 3;
void printArray(int inumbers[][COL], int rowSize);
int Min, Max;
void findMinMax(int inumbers[][3], int rowSize);
using namespace std;
int main(){
int array[ROW][COL] = {10, 20, 40, 50, 80, 100, 70, 15, 60, 22, 33, 44};
printArray(array, ROW);
findMinMax(array, ROW);
cout << "최솟값: " << Min << ", 최댓값: " << Max << endl;
return 0;
}
void printArray(int inumbers[][COL], int rowSize){
cout << "==================" << endl;
for (int i = 0; i<rowSize; i++){
for(int j = 0; j < COL; j++)
cout << setw(5) << inumbers[i][j];
cout << endl;
}
cout << "==================" << endl;
}
void findMinMax(int inumbers[][3], int rowSize){
Min = inumbers[0][0];
Max = inumbers[0][0];
for (int i = 0; i<rowSize; i++){
for(int j = 0; j < COL; j++){
if (Min > inumbers[i][j])
Min = inumbers[i][j];
if (Max < inumbers[i][j])
Max = inumbers[i][j];
}
}
}
실행 결과
Key Point
이차원 배열을 함수의 실매개변수로 사용할 때 함수 정의 시 첫 번째 인덱스 크기를 제외한 나머지 인덱스 크기는 반드시 적어주어야 한다. 따라서 void printArray(int [ (생략 가능) ][COL] 이렇게 배열의 이름을 쓴 뒤, 배열의 크기를 쓸 때는 이미 COL(열의 크기)는 명시를 해줬기 때문에 ROW(행의 크기)만 작성해주면 된다.