Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
SvI
-79 / 1 / 0
Регистрация: 23.12.2012
Сообщений: 45
#1

Определить число дней между двумя известными датами. Если вторая дата предшествует первой, то результат отрицательный - C++

22.05.2013, 21:39. Просмотров 972. Ответов 10
Метки нет (Все метки)

Здравствуйте! Помогите, пожалуйста, мне решить вот такую задачу (желательно, чтобы работало в Qt Creator):

Определить число дней между двумя известными датами. Если вторая дата предшествует первой, то результат отрицательный.

Добавлено через 12 часов 5 минут
Вверх!

Добавлено через 1 минуту
Вверх!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 21:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить число дней между двумя известными датами. Если вторая дата предшествует первой, то результат отрицательный (C++):

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

Определить число часов, прошедших между двумя датами - C++
Разработать программу, определяющую число часов, прошедших между двумя датами, введенными пользователем.

Определить и вывести количество дней между двумя датами (логические операторы и операторы ветвлений) - C++
Задачка Пользователь вводит две даты (день, месяц, год в виде целых чисел). Необходимо определить и вывести количество дней между этими...

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

Находится ли дата между двумя другими датами - C++
казалось бы задача вроде несложная, но что-то никак не могу понять в чём ошибка... имеется структура _DATE struct _DATE { int day;...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
22.05.2013, 21:57 #2
Вывод переделаете для Qt
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
struct Date
{
    Date(size_t d, size_t m, size_t y):
        day(d), month(m), year(y) {}
    size_t day, month, year;
 
    double Factor() const
    {
        if (month == 1 || month == 2) {
            return double(365 * year + day + 31 * (month - 1)
                        + floor((year - 1) / 4) - floor(3 / 4 * (floor(year - 1) / 100 + 1)));
        } else {
        return double(365 * year + day + 31*(month - 1)
                        - floor(0.4 * month + 2.3) + floor(year / 4)
                        - floor(3 / 4 * (floor(year / 100) + 1)));
        }
    }
    friend int operator - (const Date &l, const Date &r)
    { return int(l.Factor() - r.Factor()); }
};
 
int main()
{
    Date Today(22, 5, 2013);
    Date NewYear(1, 1, 2013);
    Date Yesterday(21, 5, 2013);
    cout << Today - NewYear;
    return 0;
}
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
22.05.2013, 22:13 #3
Цитата Сообщение от Olivеr Посмотреть сообщение
floor(3 / 4 * (floor(year / 100) + 1)))
3/4 выполняется первой. Т.к. 3<4, то результат деления целого на целое
всегда равен НУЛЮ. Поправьте.
1
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
23.05.2013, 00:41 #4
zss, поправил. Всегда забываю. Спасибо.
Проверил в Excel. Результат 141.
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
struct Date
{
    Date(size_t d, size_t m, size_t y):
        day(d), month(m), year(y) {}
    size_t day, month, year;
 
    double Factor() const
    {
        double d = static_cast<double>(day);
        double m = static_cast<double>(month);
        double y = static_cast<double>(year);
        if (month == 1 || month == 2) {
            return double(365.0 * y + d + 31.0 * (m - 1.0)
                        + floor((y - 1.0) / 4.0) - floor(3.0 / 4.0 * (floor(y - 1.0) / 100.0 + 1.0)));
        } else {
        return double(365.0 * y + d + 31.0 * (m - 1.0)
                        - floor(0.4 * m + 2.3) + floor(y / 4.0)
                        - floor(3.0 / 4.0 * (floor(y / 100.0) + 1.0)));
        }
    }
    friend int operator - (const Date &l, const Date &r)
    { return int(l.Factor() - r.Factor()); }
};
 
int main()
{
    Date Today(22, 5, 2013);
    Date NewYear(1, 1, 2013);
    Date Yesterday(21, 5, 2013);
    cout << Today - NewYear;
    return 0;
}
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
23.05.2013, 11:06 #5
Цитата Сообщение от Olivеr Посмотреть сообщение
3.0 / 4.0
А что мешает сразу написать 0.75
0
SvI
-79 / 1 / 0
Регистрация: 23.12.2012
Сообщений: 45
26.05.2013, 13:34  [ТС] #6
а может кто-нибудь сделать это в виде программы? Чтобы можно было вводить в нее данные и выводился в ней же ответ.
0
naHuka
0 / 0 / 0
Регистрация: 12.09.2013
Сообщений: 28
16.09.2013, 12:51 #7
У меня возник такой вопрос. Я так понимаю ответ выводиться в днях, а можно как-нибудь преобразовать ответ в вид "количество лет"."количество месяцев"."количество дней"
я так понял, для этого придется перегружать операторы?
0
Raali
16.09.2013, 13:41
  #8

Не по теме:

Цитата Сообщение от zss Посмотреть сообщение
А что мешает сразу написать 0.75
зачем, пусть компьютер сам считает, все равно это на этапе компиляции произойдет

0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
16.09.2013, 14:46 #9
В 4 посте в коде есть ошибка. Вечером выложу исправленный вариант.
0
naHuka
0 / 0 / 0
Регистрация: 12.09.2013
Сообщений: 28
16.09.2013, 20:03 #10
Цитата Сообщение от naHuka Посмотреть сообщение
У меня возник такой вопрос. Я так понимаю ответ выводиться в днях, а можно как-нибудь преобразовать ответ в вид "количество лет"."количество месяцев"."количество дней"
я так понял, для этого придется перегружать операторы?
вверх!
0
naHuka
0 / 0 / 0
Регистрация: 12.09.2013
Сообщений: 28
17.09.2013, 20:24 #11
Вверх!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2013, 20:24
Привет! Вот еще темы с ответами:

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

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

Посчитать количество дней между двумя датами - C++
читал на форуме похожие темы, даже нашел целый код, но он мне кажется мудреным, да и использовать мне массивы нельзя, мы их типо не прошли,...

Рассчитать количество дней, прошедших между двумя датами - C++
Помогите решить ТОЛЬКО с помощью циклов и условного оператора 3.Два дать заданные натуральными числами, обозначающими соответственно,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.09.2013, 20:24
Ответ Создать тему
Опции темы

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