С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 91, средняя оценка - 4.75
tashenka
3 / 3 / 0
Регистрация: 15.11.2010
Сообщений: 31
#1

Вычисление количества дней между датами - C++

15.11.2010, 14:52. Просмотров 15274. Ответов 10
Метки нет (Все метки)

Всем доброго времени суток!=)
Я только начала изучать С++ и не могу придумать алгоритм вычисления количества дней между датами. Пыталась найти в интернете,но ничего толкового не нашла. Если кто-нибудь уже сталкивался с таким кодом или может подсказать идейку,буду очень благодарна.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2010, 14:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление количества дней между датами (C++):

Функции вычисления количества дней заданного месяца и количества месяцев между двумя датами - C++
Область first - положительное целое число , год; second - положительное целое число от 1 до 12 - номер месяца. Реализовать методы daysCount...

Программа для вычисления количества дней между двумя датами - C++
Добрый день!Ни как не получаеться написать в си программу, которая будет уметь считать дни между двумя заданными датами, без использования...

Определение количества дней между двумя датами одного года - C++
Напишите программу, которая будет определять количество дней между двумя датами одного года. Входные данные: В первой строке...

Реализовать функцию вычисления количества дней между двумя датами. - C++
Помогите пожалуйста реализовать функцию вычисления количества дней между двумя датами. мои наброски int d,m,y,r; ...

Количество дней между двумя датами - C++
Хочу спросить кто знает как найти количество дней между двумя датами. ПРИМЕР input output 01.01.93 1 02.01.93 ...

Число дней недели между датами - C++
Добрый вечер. Есть две даты:начальная и конечная. И есть номер дня недели:1-воскрксенье, 2-понедельник...,7-суббота. Помогите написать...

10
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
15.11.2010, 19:04 #2
как задается дата?
нужно:
определить месяц
сколько в нём дней
учесть высокосный год
и собственно найти разницу (количество дней)
1
Tambel
32 / 32 / 2
Регистрация: 10.10.2010
Сообщений: 89
15.11.2010, 21:49 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "stdafx.h"
#include "math.h"
#include <iostream>
using namespace std;
 
int fun (int,int,int,int);
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int g1,g2,m1,m2,d2,i,d,d1,d0,g,dm=0;
    cout<<"Введите 1 дату год мес день"<<endl;
    cin>>g1>>m1>>d1;
    cout<<"Введите 2 дату год мес день"<<endl;
    cin>>g2>>m2>>d2;
    g=g2-g1;
    d0=(g/4)+1;
    d=g*365;
    d+=d0;
    dm=fun (m1,dm,d1,g1);
    d-=dm;
    dm=0;
    dm=fun (m2,dm,d2,g2);
    d+=dm;
    cout<<d;
    cin>>i;
 
        return 0;
}
 
int fun (int m1,int dm,int d1,int g)
{
switch(m1)
    {
    case 1:
        dm=0+d1;
        break;
    case 2:
        dm=31+d1;
        break;
    case 3:
        if (g-(g/4)*4==0)dm=d1+60;
        else dm=59+d1;
        break;
    case 4:
        if (g-(g/4)*4==0)dm=91+d1;
        else dm=90+d1;
        break;
    case 5:
        if (g-(g/4)*4==0) dm=121+d1;
        else dm=120+d1;
        break;
    case 6:
        if (g-(g/4)*4==0) dm=152+d1;
        else dm=151+d1;
        break;
    case 7:
        if (g-(g/4)*4==0) dm=182+d1;
        else dm=181+d1;
        break;
    case 8:
        if (g-(g/4)*4==0) dm=213+d1;
        else dm=212+d1;
        break;
    case 9:
        if (g-(g/4)*4==0) dm=244+d1;
        else dm=243+d1;
        break;
    case 10:
        if (g-(g/4)*4==0) dm=274+d1;
        else dm=273+d1;
        break;
    case 11:
        if (g-(g/4)*4==0) dm=305+d1;
        else dm=304+d1;
        break;
    case 12:
        if (g-(g/4)*4==0) dm=335+d1;
        else dm=334+d1;
        break;
    }
    return dm;
}
Погрешность +-15 дней где то по моим подсчетам, хотя иногда один в один, все от дат зависит)) проверял на http://pers.narod.ru/jscript/datecalc.html хотя не уверен что и там так уж точно)))
3
tashenka
3 / 3 / 0
Регистрация: 15.11.2010
Сообщений: 31
22.11.2010, 14:16  [ТС] #4
Все отлично,но к итогу прибавляет лишнюю единицу. Я не могу понять, в каком месте ошибка.
0
easybudda
Модератор
Эксперт CЭксперт С++
9700 / 5650 / 964
Регистрация: 25.07.2009
Сообщений: 10,873
22.11.2010, 15:14 #5
Цитата Сообщение от Tambel Посмотреть сообщение
Погрешность +-15 дней где то по моим подсчетам...
Спасибо, улыбнуло

tashenka, вот на С не так давно делал. В принципе должно бы и как С++ программа скомпилироваться...
1
Tambel
32 / 32 / 2
Регистрация: 10.10.2010
Сообщений: 89
22.11.2010, 16:34 #6
Цитата Сообщение от tashenka Посмотреть сообщение
Все отлично,но к итогу прибавляет лишнюю единицу. Я не могу понять, в каком месте ошибка.
В 17 строчке кода где
C++
1
 d0=(g/4)+1;
надо просто поставить
C++
1
 d0=g/4;
Незнай зачем поставил..)
1
D1STEMPER
0 / 0 / 0
Регистрация: 23.02.2011
Сообщений: 6
12.09.2012, 17:35 #7
а как привязать конечную дату к дате на компьютере ???
0
Darcvizer
0 / 0 / 0
Регистрация: 20.07.2016
Сообщений: 1
20.07.2016, 22:32 #8
Tambel
Коментарии не помешали бы, а то код есть, а вот догнать что к чему не выходит...
0
hoggy
6731 / 2916 / 499
Регистрация: 15.11.2014
Сообщений: 6,551
Завершенные тесты: 1
20.07.2016, 22:51 #9
Цитата Сообщение от tashenka Посмотреть сообщение
Я только начала изучать С++ и не могу придумать алгоритм вычисления количества дней между датами. Пыталась найти в интернете,но ничего толкового не нашла. Если кто-нибудь уже сталкивался с таким кодом или может подсказать идейку,буду очень благодарна.
можно использовать стандартную библиотеку с++
Защита файла-сборки lib
0
S0lexV
11 / 11 / 0
Регистрация: 27.07.2011
Сообщений: 186
21.07.2016, 00:02 #10
я так делал:
C++
1
int i = abs( (DateTimePicker1->Date - DateTimePicker2->Date ).operator int() );
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
21.07.2016, 14:45 #11
Цитата Сообщение от Darcvizer Посмотреть сообщение
Коментарии не помешали бы, а то код есть, а вот догнать что к чему не выходит...
Без комментариев!

Добавлено через 14 часов 37 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//алгоритм вычисления количества дней между датами.
///////////////////////////////////////////////////////////////////////////////
#include <ctime>
#include <iostream>
#include <string>
///////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
///////////////////////////////////////////////////////////////////////////////
time_t  time_t_of_date
    (
        int     day,
        int     month,
        int     year
    )
{
    std::tm     t;
 
    t.tm_sec    =   0;
    t.tm_min    =   0;
    t.tm_hour   =   0;
    t.tm_mday   =   day;
    t.tm_mon    =   month   -   1;
    t.tm_year   =   year    -   1900;
    t.tm_isdst  =   0;
 
    return  std::mktime( &t );
}
///////////////////////////////////////////////////////////////////////////////
time_t    input_date_and_get_its_time( T_str   const   &   prompt )
{
    std::cout   <<  std::endl
                <<  prompt      <<  ":"     <<  std::endl
                <<  "\tday\t\t: ";
 
    int     day{};
    std::cin    >>  day;
 
    std::cout   <<  "\tmonth\t\t: ";
    int     month{};
    std::cin    >>  month;
 
    std::cout   <<  "\tyear (YYYY)\t: ";
    int     year{};
    std::cin    >>  year;
 
    return  time_t_of_date
                (
                    day,
                    month,
                    year
                );
}
///////////////////////////////////////////////////////////////////////////////
double     time_diff_in_days
    (
        time_t  t_begin,
        time_t  t_end
    )
{
    const   int     SECONDS_PER_DAY     =   60  *   60  *   24;
 
    return      difftime( t_end,  t_begin )
            /   SECONDS_PER_DAY;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    auto    start_time      =   input_date_and_get_its_time( "start date"    );
    auto    finish_time     =   input_date_and_get_its_time( "finish date"   );
 
    std::cout   <<  std::endl
                <<  "days between dates -> "
 
                <<  time_diff_in_days
                        (
                            start_time,
                            finish_time
                        )
 
                <<  std::endl;
}
0
21.07.2016, 14:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2016, 14:45
Привет! Вот еще темы с ответами:

Вычислить количество дней между двумя датами - C++
Даны натуральные числа a1, b1, c1, a2, b2, c2, которые указывают две даты (число, месяц, год). Вычислить: количество дней, прошедших между...

Вывести разницу дней между двумя датами - C++
Всем привет. Ребят, прошу вашей помощи#include &lt;iostream&gt; using namespace std; class Date{ private: int raz, sch; int day,...

Количество лет, месяцев, дней между датами - C++
Здравствуйте. Может подскажите как вывести количество лет месяцев дней между двумя датами? спасибо за ответы!

Высчитать количество дней между двумя датами - C++
Короче,много тем на форуме по этому поводу,но нету ниодной правильной,которая мне нужна. Суть программы в том,что нужно ввести 2 даты....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.