Основы программирования на С++ для начинающих

Задача. Вычислить количество дней между датами.

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

Для практики предлагается два варианта:

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

Приведу свой пример, частично решающий первый упрощенный вариант:

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

Решать можно любым способом, хоть циклом хоть чем-то еще. А вот решение по второму варианту не покажу :) Пусть оно будет домашним заданием. Удачи!

Вопросы задавайте в комментариях

Рассылка новых уроков по программированию:

Задача. Вычислить количество дней между датами.
3 (60%) 1 vote

15 thoughts on “Задача. Вычислить количество дней между датами.

  1. помогите пожалуйста написать программу

    Определить сколько дней в году (всего 12 месяцев, в каждом есть определенное количество дней) используя функцию for и одномерный массив

  2. [code]#include “stdafx.h”
    #include
    using namespace std;
    int main()
    {
    int monthM[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
    char ch;
    int end, day, month, year, sum = 0;
    setlocale(LC_ALL, “rus”);
    cout <> day >> ch >> month >> ch >> year;
    cout<> end;

    for (int i = month + 1;i <= 11;i++) sum += monthM[i];
    sum += monthM[month]+day + (end – year) * 365;
    for (int i = year+1; i < end; i++)
    if (i % 400 == 0 || i % 4 == 0) sum++;//в википедии написано, что в Григорианском календаре високосный год каждый 4й + каждый 400й
    if ((year % 400 == 0 || year % 4 == 0) && month < 4) sum++; //начальный год проверяю отдельно, т.к. даже если он високосный, мы можем не зацепить 29февраля в период
    cout << "\nВ этом промежутке " << sum << "дней!";
    return 0;
    }
    [/code]

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *