1

Тема: Як обмежити оператор if?

Завдання: Написати функцію яка за номером місяця визначає кількість днів у ньому. Враховуючи високосний рік.

Місяці 9-12 неправильно виводять свою кількість днів. Як це виправити? P.s. я пробував якось обмежити if, щоб оператор пропускав ці місяці, але щось у мене не вийшло і я не знаю як це виправити((

Ось код:

#include <iostream>
#include <windows.h>
#include <locale.h>
#include <math.h>

using namespace std;

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    int a;
    cout << "1 - Січень" << endl;
    cout << "2 - Лютий" << endl;
    cout << "3 - Березень" << endl;
    cout << "4 - Квітень" << endl;
    cout << "5 - Травень" << endl;
    cout << "6 - Червень" << endl;
    cout << "7 - Липень" << endl;
    cout << "8 - Серпень" << endl;
    cout << "9 - Вересень" << endl;
    cout << "10 - Жовтень" << endl;
    cout << "11 - Листопад" << endl;
    cout << "12 - Грудень" << endl;
    cout << "Оберіть місяць: ";
    cin >> a;

    if (a == 2)
    {
        char b;
        cout << "Рік високосний?" << endl << "1 - Так" << endl << "2 - Ні" << endl;
        cin >> b;
        if (b == '1')
        {
            cout << "В цьому місяці 29 днів" << endl;
        }
        else if (b == '2')
        {
            cout << "В цьому місяці 28 днів" << endl;
        }
    }

    if (a % 2 || a == 8)
        cout << "В цьому місяці 31 день" << endl;
    else
    {
        if (!(a % 2))
        {
            if (a != 2)
            {
                cout << "В цьому місяці 30 днів" << endl;
            }
        }
    }

    system("pause");
    return 0;
}

2

Re: Як обмежити оператор if?

8) = 8 ) (не знав, що тут є смайлики)

3

Re: Як обмежити оператор if?

Я неправильно зробив завдання, мені потрібно було його робити за допомогою функції((

І повноцінне завдання має такий вигляд: Написати функцію яка за номером місяця визначає кількість днів у ньому. Високосний рік можна не враховувати. Роздрукувати таблицю днів для всіх зимових місяців.

Може хтось допомогти, будь ласка. Буду дуже вдячний.

4

Re: Як обмежити оператор if?

Ось код зроблений через функцію:

#include <iostream>
#include <windows.h>
#include <locale.h>
#include <math.h>

using namespace std;

float days(int a)
{
    if (a == 2)
    {
        char b;
        cout << "Рік високосний?" << endl << "1 - Так" << endl << "2 - Ні" << endl;
        cin >> b;
        if (b == '1')
        {
            cout << "В цьому місяці 29 днів" << endl;
        }
        else if (b == '2')
        {
            cout << "В цьому місяці 28 днів" << endl;
        }
    }

    if (a % 2 || a == 8)
        cout << "В цьому місяці 31 день" << endl;
    else
    {
        if (!(a % 2))
        {
            if (a != 2)
            {
                cout << "В цьому місяці 30 днів" << endl;
            }
        }
    }
    return a;
}

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    int x;
    cout << "1 - Січень" << endl;
    cout << "2 - Лютий" << endl;
    cout << "3 - Березень" << endl;
    cout << "4 - Квітень" << endl;
    cout << "5 - Травень" << endl;
    cout << "6 - Червень" << endl;
    cout << "7 - Липень" << endl;
    cout << "8 - Серпень" << endl;
    cout << "9 - Вересень" << endl;
    cout << "10 - Жовтень" << endl;
    cout << "11 - Листопад" << endl;
    cout << "12 - Грудень" << endl;
    cout << "Оберіть місяць: ";
    cin >> x;
    cout << days(x) << endl;

    system("pause");
    return 0;
}

Але проблему з місяцями 9-12 я так і не зміг вирішити(

5

Re: Як обмежити оператор if?

1. Функція має повертати кількість днів, а не виводити.
2. Можете, якщо маєте бажання, розписати повністю

if(a==1||a==3||...)

Але класичне рішення тут -  масив довжин місяців, тоді взагалі if не потрібен.

Подякували: K1T1

6

Re: Як обмежити оператор if?

Це ж було вже.

Подякували: K1T1