C++/문제풀이

[C++] 연도를 입력한 뒤 월별 일수 출력하기

year.number 2022. 6. 14. 14:23

 

실습문제 8-1

void printArray(int inumbers[], int from, int to);
void daysInMonth(int year, int days[], int size);

[목표] 함수와 배열을 이용하여 월별 일수 출력

 

//
//  main.cpp
//
//  Created by yeonsu on 2022/06/14.
//

// 연도를 입력한 뒤 월별 일수 출력하기

#include <iostream>
#include <ctime>        //rand 함수
#include <iomanip>

using namespace std;

void printArray(int inumbers[], int from, int to);
void daysInMonth(int year, int days[], int size);

int main(){
    
    cout << "연도를 입력하세요: ";
    int input_year;
    cin >> input_year;
    
    cout << input_year << "년도 월별 일수: " << endl << endl;
    
    cout << endl;
    
    int year[13];
    daysInMonth(input_year, year, 13);
    printArray(year, 1,12);
    return 0;
}


// 일차원 배열 출력(인덱스 + 구분자 + 배열)
void printArray(int inumbers[], 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) << inumbers[i];
    cout << endl << endl;

}
    
//월별 일수 계산
void daysInMonth(int year, int days[], int size){
    for (int i = 1; i <= size; i++){
        if ( i == 1 ||  i == 3 || i == 5 ||i == 7 ||i == 8 ||i == 10 ||i == 12){
            days[i] = 31;
        }
        else if (i == 4 ||i == 6 ||i == 9 ||i == 11){
            days[i] = 30;
        }
        else if(i == 2){
            if (((year % 4 == 0) && (year % 100 == 0)) || year % 400 == 0)
                days[2] = 29;
                else
                    days[2] = 28;
        }
    }
}

실행 결과