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(행의 크기)만 작성해주면 된다.