[C++] 2차원배열을 써서 구구단을 만들어보자

2022. 5. 31. 00:28코딩 1막 <C++개념편>/코딩 1막 <C++응용편>

728x90

#include <iostream>		

using namespace std;	


/*
// 2차원배열_구구단만들기
void Func(int arr[])	// 1차원배열은 매개변수로 넣을 때, 대괄호안에 크기를 표시하지 않아도 되지만
{

}

// 2차원배열은 매개변수로 넣을 때, 크기를 표시해야한다
// 그 이유는 1차원배열은 어차피 요소의 하나의 크기가 int(4바이트)임을 알 수 있지만, 2차원 배열은 요소 하나의 크기가 얼마가 될지 알 수 없기 때문
*/


void InsertGugudan(int arr[][10])      //2차원 배열안에 구구단 값들을 매칭시켜주는 함수
{                              //여기서 바뀐값이 원본에도 바뀌는 이유는 배열의 매개변수는 주소를 전달하기때문 (call by address)
    for (int i = 2; i < 10; i++)
    {
        for (int j = 1; j < 10; j++)
        {
            arr[i][j] = i * j;
        }
    }
}



void Gugudan(int arr[][10], int dan)   //매개변수 dan에 따라 해당 단수를 출력해주는 함수
{
    for (int i = 1; i < 10; i++)
    {
        cout << arr[dan][i] << " ";
    }
    cout << endl;
}

void Gugudan(int arr[][10])            //함수 오버로딩하여, 단수를 입력받지 않았을 경우 구구단 전체를 출력해주는 함수
{
    for (int i = 2; i < 10; i++)
    {
        Gugudan(arr, i);
    }
}


void main()
{
    int guguArray[10][10];
    InsertGugudan(guguArray);
    cout << "3 * 5 = " << guguArray[3][5] << endl;   //이미 값이 다 매칭이 되어있으므로 15가 출력됨

    cout << "2단 출력" << endl;
    Gugudan(guguArray, 2);

    cout << "모두 출력" << endl;
    Gugudan(guguArray);

}

출력 결과

728x90