Основи програмування на С ++ для початківців

Задача. Обчислити кількість днів між датами.

завдання просте: Знайти кількість днів між двома датами. Передбачити облік високосних років.

Для практики пропонується два варіанти:

  1. Одна з граничних дат описується тільки роком. Тобто початкова дата вводиться повністю (например 25.12.2015), а друга тільки рік (например 2016). Проводиться підрахунок днів до 01.01.2016
  2. Обидві дати повні – описуються днем ​​місяцем роком.

Наведу свій приклад, частково вирішальний перший спрощений варіант:

тут функція DaysCount() приймає в перших трьох параметрах початкову дату (рік, місяць, день) і останнім параметром граничну (рік, 1-й день січня)

Вирішувати можна будь-яким способом, хоч циклом хоч чимось ще. А ось рішення по другому варіанту не покажу :) Нехай воно буде домашнім завданням. хай щастить!

Питання задавайте в коментарях

40 думки про "Задача. Обчислити кількість днів між датами.

  1. Я трохи поусердствовал і написав все з захистами, введенням і іншим… Могли б Ви оцінити і прокоментувати мій варіант вирішення цього завдання:
    #include “stdafx.h”
    #include
    #include

    int main()
    {
    setlocale (LC_ALL,”rus”);
    використовуючи зЬй::cout;
    використовуючи зЬй::cin;

    Подвійний daus_date = 0;
    подвійний month_date = 0;
    подвійний year_date = 0;

    довго довго daus_date_int = 0;
    довго довго month_date_int = 0;
    довго довго year_date_int = 0;

    //——————————————————————————————————————————-
    //перша дата
    //——————————————————————————————————————————-
    вибір BOOL = брехня;
    while (вибір == брехня)
    {
    cout <> year_date;
    (довго довго) year_date_int = year_date;
    if (year_date_int >= 0)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    вибір = брехня;
    }
    }
    system("cls");
    вибір = брехня;
    while (вибір == брехня)
    {
    cout <> month_date;
    (довго довго) month_date_int = month_date;
    if (month_date_int == 1 || month_date_int == 2 || month_date_int == 3 || month_date_int == 4 || month_date_int == 5 || month_date_int == 6 || month_date_int == 7 || month_date_int == 8 || month_date_int == 9|| month_date_int == 10 || month_date_int == 11 || month_date_int == 12)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    вибір = брехня;
    }
    }
    system("cls");
    вибір = брехня;
    while (вибір == брехня)
    {
    cout <> daus_date;
    (довго довго) daus_date_int = daus_date;
    switch (month_date_int)
    {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    {
    if (daus_date_int >= 1 && daus_date_int <= 31)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    switch (month_date_int)
    {
    case 1:
    cout << "В январе 31 день!\n\n";
    break;
    case 3:
    cout << "В марте 31 день!\n\n";
    break;
    case 5:
    cout << "В мае 31 день!\n\n";
    break;
    case 7:
    cout << "В июле 31 день!\n\n";
    break;
    case 8:
    cout << "В августе 31 день!\n\n";
    break;
    case 10:
    cout << "В октябре 31 день!\n\n";
    break;
    case 12:
    cout <= 1 && daus_date_int <= 30)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    switch (month_date_int)
    {
    case 4:
    cout << "В апреле 30 днів!\n\n";
    break;
    case 6:
    cout << "В июне 30 днів!\n\n";
    break;
    case 9:
    cout << "В сентябре 30 днів!\n\n";
    break;
    case 11:
    cout << "В ноябре 30 днів!\n\n";
    break;
    }
    вибір = брехня;
    }
    break;
    }

    case 2:
    {
    if (year_date_int % 4 == 0)
    {
    if (daus_date_int <= 29)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    cout << "В високосном году, в лютому 29 дней\n\n";
    вибір = брехня;
    }
    }
    else
    {
    if (daus_date_int <= 28)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    cout << "В феврале 28 дней\n\n";
    вибір = брехня;
    }
    }
    break;
    }
    }

    }
    system("cls");

    довго довго one_daus_date = 0;
    довго довго one_month_date = 0;
    довго довго one_year_date = 0;

    one_daus_date = daus_date_int;
    one_month_date = month_date_int;
    one_year_date = year_date_int;

    //——————————————————————————————————————————-
    //друга дата
    //——————————————————————————————————————————-
    вибір = брехня;
    while (вибір == брехня)
    {
    cout <> year_date;
    (довго довго) year_date_int = year_date;
    if (year_date_int >= 0)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    вибір = брехня;
    }
    }
    system("cls");
    вибір = брехня;
    while (вибір == брехня)
    {
    cout <> month_date;
    (довго довго) month_date_int = month_date;
    if (month_date_int == 1 || month_date_int == 2 || month_date_int == 3 || month_date_int == 4 || month_date_int == 5 || month_date_int == 6 || month_date_int == 7 || month_date_int == 8 || month_date_int == 9|| month_date_int == 10 || month_date_int == 11 || month_date_int == 12)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    вибір = брехня;
    }
    }
    system("cls");
    вибір = брехня;
    while (вибір == брехня)
    {
    cout <> daus_date;
    (довго довго) daus_date_int = daus_date;
    switch (month_date_int)
    {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    {
    if (daus_date_int >= 1 && daus_date_int <= 31)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    switch (month_date_int)
    {
    case 1:
    cout << "В январе 31 день!\n\n";
    break;
    case 3:
    cout << "В марте 31 день!\n\n";
    break;
    case 5:
    cout << "В мае 31 день!\n\n";
    break;
    case 7:
    cout << "В июле 31 день!\n\n";
    break;
    case 8:
    cout << "В августе 31 день!\n\n";
    break;
    case 10:
    cout << "В октябре 31 день!\n\n";
    break;
    case 12:
    cout <= 1 && daus_date_int <= 30)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    switch (month_date_int)
    {
    case 4:
    cout << "В апреле 30 днів!\n\n";
    break;
    case 6:
    cout << "В июне 30 днів!\n\n";
    break;
    case 9:
    cout << "В сентябре 30 днів!\n\n";
    break;
    case 11:
    cout << "В ноябре 30 днів!\n\n";
    break;
    }
    вибір = брехня;
    }
    break;
    }

    case 2:
    {
    if (year_date_int % 4 == 0)
    {
    if (daus_date_int <= 29)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    cout << "В високосном году, в лютому 29 дней\n\n";
    вибір = брехня;
    }
    }
    else
    {
    if (daus_date_int <= 28)
    вибір = правда;
    else
    {
    cout << "\nВы ввели недопустивое значение!\n";
    cout << "В феврале 28 дней\n\n";
    вибір = брехня;
    }
    }
    break;
    }
    }

    }
    system("cls");

    довго довго two_daus_date = 0;
    довго довго two_month_date = 0;
    довго довго two_year_date = 0;

    two_daus_date = daus_date_int;
    two_month_date = month_date_int;
    two_year_date = year_date_int;

    //——————————————————————————————————————————-
    //Рахунок днів в першій датою
    //——————————————————————————————————————————-
    подвійний counter_daus_one_date = 0;
    for (довго довго лічильник = 0; лічильник < one_year_date; лічильник ++)
    {
    if (лічильник % 4 == 0 && лічильник != 0)
    counter_daus_one_date + = 366;
    else
    counter_daus_one_date + = 365;
    }
    for (короткий лічильник = 0; лічильник <= one_month_date; лічильник ++)
    {
    switch (лічильник)
    {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    counter_daus_one_date + = 31;
    break;
    case 4:case 6 :case 9: case 11:
    counter_daus_one_date + = 30;
    break;
    case 2:
    if (one_year_date % 4 == 0)
    counter_daus_one_date + = 29;
    else
    counter_daus_one_date + = 28;
    break;
    }
    }
    counter_daus_one_date + = one_daus_date;

    //——————————————————————————————————————————-
    //Рахунок днів у другій датою
    //——————————————————————————————————————————-

    подвійний counter_daus_two_date = 0;
    for (довго довго лічильник = 0; лічильник < two_year_date; лічильник ++)
    {
    if (лічильник % 4 == 0 && лічильник != 0)
    counter_daus_two_date + = 366;
    else
    counter_daus_two_date + = 365;
    }
    for (короткий лічильник = 0; лічильник <= two_year_date; лічильник ++)
    {
    switch (лічильник)
    {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    counter_daus_two_date + = 31;
    break;
    case 4:case 6 :case 9: case 11:
    counter_daus_two_date + = 30;
    break;
    case 2:
    if (two_year_date % 4 == 0)
    counter_daus_two_date + = 29;
    else
    counter_daus_two_date + = 28;
    break;
    }
    }
    counter_daus_two_date + = two_daus_date;
    //——————————————————————————————————————————-
    //Рахунок кількості днів між датами
    //——————————————————————————————————————————-

    cout << "Первая дата: ";
    if (one_daus_date < 10)
    cout << '0' << one_daus_date << '.';
    else
    cout << one_daus_date << '.';
    if (one_month_date < 10)
    cout << '0' << one_month_date << '.';
    else
    cout << one_month_date << '.';
    cout << one_year_date << '\n';

    cout << "Вторая дата: ";
    if (two_daus_date < 10)
    cout << '0' << two_daus_date << '.';
    else
    cout << two_daus_date << '.';
    if (two_month_date < 10)
    cout << '0' << two_month_date << '.';
    else
    cout << two_month_date << '.';
    cout << two_year_date << '\n';

    if (counter_daus_two_date < counter_daus_one_date)
    cout << "Количество дней между датами: " << counter_daus_one_date – counter_daus_two_date < counter_daus_one_date)
    cout << "Количество дней между датами: " << counter_daus_two_date – counter_daus_one_date << '\n';
    if (counter_daus_two_date == counter_daus_one_date)
    cout << "Вы ввели две одинаковые даты!" << '\n';
    _getch();
    return 0;
    }

    1. Вибачте, не знаю як цей код оформити в стилі С ++ (як оформлено в рамці Ваше рішення).

      1. потрібно обрамити свій код Tegami код:
        [код]
        … тут ваш код …
        [/код]
        Тільки замість квадратних дужок потрібно писати кутові (знаки “меньше” і “больше”).

      2. А ось так (без форматування) записаний ваш приклад ніхто, естественно, навіть дивитися не стане…

        З таким же успіхом весь ваш код можна записати і в один рядок взагалі (можете перевірити, що при цьому він ще й працює).

  2. Ось більш культурна версія мого коду:

    #include "stdafx.h"
    #include
    #include

    int main()
    {
    setlocale (LC_ALL,"rus");
    using std::cout;
    using std::cin;

    double daus_date = 0;
    double month_date = 0;
    double year_date = 0;

    long long daus_date_int = 0;
    long long month_date_int = 0;
    long long year_date_int = 0;

    //-------------------------------------------------------------------------------------------------------------------------------
    //Первая дата
    //-------------------------------------------------------------------------------------------------------------------------------
    bool choice = false;
    while (choice == false)
    {
    cout <> year_date;
    (long long) year_date_int = year_date;
    if (year_date_int >= 0)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    choice = false;
    }
    }
    system("cls");
    choice = false;
    while (choice == false)
    {
    cout <> month_date;
    (long long) month_date_int = month_date;
    if (month_date_int == 1 || month_date_int == 2 || month_date_int == 3 || month_date_int == 4 || month_date_int == 5 || month_date_int == 6 || month_date_int == 7 || month_date_int == 8 || month_date_int == 9|| month_date_int == 10 || month_date_int == 11 || month_date_int == 12)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    choice = false;
    }
    }
    system("cls");
    choice = false;
    while (choice == false)
    {
    cout <> daus_date;
    (long long) daus_date_int = daus_date;
    switch (month_date_int)
    {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    {
    if (daus_date_int >= 1 && daus_date_int <= 31)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    switch (month_date_int)
    {
    case 1:
    cout << "В январе 31 день!\n\n";
    break;
    case 3:
    cout << "В марте 31 день!\n\n";
    break;
    case 5:
    cout << "В мае 31 день!\n\n";
    break;
    case 7:
    cout << "В июле 31 день!\n\n";
    break;
    case 8:
    cout << "В августе 31 день!\n\n";
    break;
    case 10:
    cout << "В октябре 31 день!\n\n";
    break;
    case 12:
    cout <= 1 && daus_date_int <= 30)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    switch (month_date_int)
    {
    case 4:
    cout << "В апреле 30 дней!\n\n";
    break;
    case 6:
    cout << "В июне 30 дней!\n\n";
    break;
    case 9:
    cout << "В сентябре 30 дней!\n\n";
    break;
    case 11:
    cout << "В ноябре 30 дней!\n\n";
    break;
    }
    choice = false;
    }
    break;
    }

    case 2:
    {
    if (year_date_int % 4 == 0)
    {
    if (daus_date_int <= 29)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    cout << "В високосном году, в феврале 29 дней\n\n";
    choice = false;
    }
    }
    else
    {
    if (daus_date_int <= 28)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    cout << "В феврале 28 дней\n\n";
    choice = false;
    }
    }
    break;
    }
    }

    }
    system("cls");

    long long one_daus_date = 0;
    long long one_month_date = 0;
    long long one_year_date = 0;

    one_daus_date = daus_date_int;
    one_month_date = month_date_int;
    one_year_date = year_date_int;

    //-------------------------------------------------------------------------------------------------------------------------------
    //Вторая дата
    //-------------------------------------------------------------------------------------------------------------------------------
    choice = false;
    while (choice == false)
    {
    cout <> year_date;
    (long long) year_date_int = year_date;
    if (year_date_int >= 0)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    choice = false;
    }
    }
    system("cls");
    choice = false;
    while (choice == false)
    {
    cout <> month_date;
    (long long) month_date_int = month_date;
    if (month_date_int == 1 || month_date_int == 2 || month_date_int == 3 || month_date_int == 4 || month_date_int == 5 || month_date_int == 6 || month_date_int == 7 || month_date_int == 8 || month_date_int == 9|| month_date_int == 10 || month_date_int == 11 || month_date_int == 12)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    choice = false;
    }
    }
    system("cls");
    choice = false;
    while (choice == false)
    {
    cout <> daus_date;
    (long long) daus_date_int = daus_date;
    switch (month_date_int)
    {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    {
    if (daus_date_int >= 1 && daus_date_int <= 31)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    switch (month_date_int)
    {
    case 1:
    cout << "В январе 31 день!\n\n";
    break;
    case 3:
    cout << "В марте 31 день!\n\n";
    break;
    case 5:
    cout << "В мае 31 день!\n\n";
    break;
    case 7:
    cout << "В июле 31 день!\n\n";
    break;
    case 8:
    cout << "В августе 31 день!\n\n";
    break;
    case 10:
    cout << "В октябре 31 день!\n\n";
    break;
    case 12:
    cout <= 1 && daus_date_int <= 30)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    switch (month_date_int)
    {
    case 4:
    cout << "В апреле 30 дней!\n\n";
    break;
    case 6:
    cout << "В июне 30 дней!\n\n";
    break;
    case 9:
    cout << "В сентябре 30 дней!\n\n";
    break;
    case 11:
    cout << "В ноябре 30 дней!\n\n";
    break;
    }
    choice = false;
    }
    break;
    }

    case 2:
    {
    if (year_date_int % 4 == 0)
    {
    if (daus_date_int <= 29)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    cout << "В високосном году, в феврале 29 дней\n\n";
    choice = false;
    }
    }
    else
    {
    if (daus_date_int <= 28)
    choice = true;
    else
    {
    cout << "\nВы ввели недопустимое значение!\n";
    cout << "В феврале 28 дней\n\n";
    choice = false;
    }
    }
    break;
    }
    }

    }
    system("cls");

    long long two_daus_date = 0;
    long long two_month_date = 0;
    long long two_year_date = 0;

    two_daus_date = daus_date_int;
    two_month_date = month_date_int;
    two_year_date = year_date_int;

    //-------------------------------------------------------------------------------------------------------------------------------
    //Счёт дней в первой дате
    //-------------------------------------------------------------------------------------------------------------------------------
    double counter_daus_one_date = 0;
    for (long long counter = 0; counter < one_year_date; ++counter)
    {
    if (counter % 4 == 0 && counter != 0)
    counter_daus_one_date += 366;
    else
    counter_daus_one_date += 365;
    }
    for (short counter = 0; counter < one_month_date; ++counter)
    {
    switch (counter)
    {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    counter_daus_one_date += 31;
    break;
    case 4:case 6 :case 9: case 11:
    counter_daus_one_date += 30;
    break;
    case 2:
    if (one_year_date % 4 == 0)
    counter_daus_one_date += 29;
    else
    counter_daus_one_date += 28;
    break;
    }
    }
    counter_daus_one_date += one_daus_date;
    cout << counter_daus_one_date << " counter_one\n";

    //-------------------------------------------------------------------------------------------------------------------------------
    //Счёт дней во второй дате
    //-------------------------------------------------------------------------------------------------------------------------------

    double counter_daus_two_date = 0;
    for (long long counter = 0; counter < two_year_date; ++counter)
    {
    if (counter % 4 == 0 && counter != 0)
    counter_daus_two_date += 366;
    else
    counter_daus_two_date += 365;
    }
    for (short counter = 0; counter < two_month_date; ++counter)
    {
    switch (counter)
    {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    counter_daus_two_date += 31;
    break;
    case 4:case 6 :case 9: case 11:
    counter_daus_two_date += 30;
    break;
    case 2:
    if (two_year_date % 4 == 0)
    counter_daus_two_date += 29;
    else
    counter_daus_two_date += 28;
    break;
    }
    }
    counter_daus_two_date += two_daus_date;
    cout << counter_daus_two_date << " counter_two\n";
    //-------------------------------------------------------------------------------------------------------------------------------
    //Счёт количества дней между датами
    //-------------------------------------------------------------------------------------------------------------------------------

    cout << "Первая дата: ";
    if (one_daus_date < 10)
    cout << '0' << one_daus_date << '.';
    else
    cout << one_daus_date << '.';
    if (one_month_date < 10)
    cout << '0' << one_month_date << '.';
    else
    cout << one_month_date << '.';
    cout << one_year_date << '\n';

    cout << "Вторая дата: ";
    if (two_daus_date < 10)
    cout << '0' << two_daus_date << '.';
    else
    cout << two_daus_date << '.';
    if (two_month_date < 10)
    cout << '0' << two_month_date << '.';
    else
    cout << two_month_date << '.';
    cout << two_year_date << '\n';

    if (counter_daus_two_date < counter_daus_one_date)
    cout << "Количество дней между датами: " << counter_daus_one_date - counter_daus_two_date < counter_daus_one_date)
    cout << "Количество дней между датами: " << counter_daus_two_date - counter_daus_one_date << '\n';
    if (counter_daus_two_date == counter_daus_one_date)
    cout << "Вы ввели две одинаковые даты!" << '\n';
    _getch();
    return 0;
    }

  3. #include
    using namespace std;

    int main()
    {
    INT,мій,бог;
    INT den_1, mes_1, god_1;

    cout<<"vvedite pervuy datu"<<endl;
    cout<<"vvedite den"<>den;
    cout<<"vvedite mesyas"<>мій;
    cout<<"vvedite god"<>бог;
    cout<<"————————-"<<endl;
    cout<<"vvedite tekushuy datu"<<endl;
    cout<<"vvedite den"<>den_1;
    cout<<"vvedite mesyas"<>mes_1;
    cout<<"vvedite god"<>god_1;
    подвійний к = 0;
    INT kol_d = 0;
    INT kol_m = 0;
    INT kol_g = 0;
    INT sum_m = 0;
    INT sum_d = 0;

    if(mes_1 == 1)
    к = 31;
    else if(mes_1 == 2)
    к = 28;
    else if (mes_1 == 3)
    к = 31;
    else if (mes_1 == 4)
    к = 30;
    else if (mes_1 == 5)
    к = 31;
    else if (mes_1 == 6)
    к = 30;
    else if (mes_1 == 7)
    к = 31;
    else if (mes_1 == 8)
    к = 31;
    else if (mes_1 == 9)
    к = 30;
    else if (mes_1 == 10)
    к = 31;
    else if (mes_1 == 11)
    к = 30;
    else if(mes_1 == 12)
    к = 31;

    kol_d = к-ден;//вважаємо скільки днів до завершення введеного місяця предидущей дати
    kol_m = 12-mes;//скільки місяців до завершення року
    kol_g = god_1-(бог + 1);
    sum_d = kol_d + den_1;
    sum_m = kol_m + mes_1;

    cout<<"dney"<<sum_d<<endl;
    cout<<"mes"<<sum_m<<endl;
    cout<<"godov"<<kol_g<<endl;

    return 0;
    }


  4. #include "stdafx.h"
    #include
    #include

    using namespace std;

    int main()
    {
    setlocale (LC_ALL, "rus");

    int day, month, year, finDay,finMonth,finYear, stData,finData, leapYear,monthDay = 0;
    int monthArray[12]{ 31,28,31,30,31,30,31,31,30,31,30,31 };
    while (true)
    {
    cout <> day >> month >> year;

    if (year < 45 || monthArray[month] 12)
    cout << "Ввод нверный, повторите ввод!" << endl;
    else
    break;
    }

    if (!(year % 4) && month < 3) leapYear = year / 4-1;
    else leapYear = year / 4;

    for (int i = 0; i < month; i++)
    monthDay += monthArray[i];

    stData = year * 365 + leapYear + monthDay + day;
    monthDay = 0;

    while (true)
    {
    cout <> finDay >> finMonth >> finYear;

    for (int i = 0; i < finMonth; i++)
    monthDay += monthArray[i];

    if (!(finYear % 4) && month < 3) leapYear = finYear / 4-1;
    else leapYear = finYear / 4;

    finData = finYear * 365 + leapYear + monthDay + finDay;

    if (finData <= stData)
    cout << "Конечная дата не может быть раньше начальной\n";
    else
    break;
    }

    cout << "\n Между датами " << finData - stData << " дней\n";

    _getch();

    return 0;
    }

  5. Чи не занадто замудрілі з кодом? Адже можна все на багато простіше зробити з класами. Це врешті-решт ООП мова а не бейсик який-небудь.

    1. ООП не панацея і, найчастіше, не спрощує код, але робить його більш зрозумілим і впорядкованим. Набагато простіше завдання можна зробити використовуючи бібліотечні API мов C або C ++. Але тільки для початківців корисніше показати як алгоритмічно виробляються обчислення, ніж використовувати готові інструменти.

    2. поширеність панацеєю, і найчастіше не спрощує код, але робить його більш зрозумілим і впорядкованим. За рахунок чого дійсно можна було б спростити код, так це використовувати API бібліотек C або C ++ для роботи з датами. Але для початківців корисніше демонстрація алгоритмів обчислень, ніж використання готових інструментів.

  6. Ось моє рішення. Конечно, тут немає жодних захистів і код написаний жахливо, т.к. відсутній нормальний найманого і коментарі, але зі своїм завданням він справляється.

  7. ніколи! … Ніколи при роботі з календарем не використовуйте своє “ручне” уявлення про дати, календарі (погано розуміється). наприклад то, що:
    – 2016 – це високосний рік, 366 днів…
    – але!: 1900 (или 1800 і т.д.) – це НЕ високосні роки, 365 днів, виключення…
    – але!: 2000 – мрії Visokosnyj рік, це виключення з попереднього правила…

    Для роботи з календарем є бібліотека : тип даних struct tm, time_t … функції вказуєте їй(), місцевий час() … і т.д.

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *