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

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

Войти
Регистрация
Восстановить пароль
 
Azart11
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 54
#1

Определить число часов, прошедших между двумя датами - C++

20.09.2012, 07:24. Просмотров 932. Ответов 7
Метки нет (Все метки)

Разработать программу, определяющую число часов, прошедших между двумя датами, введенными пользователем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2012, 07:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить число часов, прошедших между двумя датами (C++):

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

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

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

Определить число полных часов и число полных минут, прошедших с начала суток - C++
С начала суток часовая стрелка повернулась на y градусов (0<=y<=360, y - вещественное число). Определить число полных часов и число полных...

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

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

7
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
26.09.2012, 23:31 #2
Какие твои идеи решения, автор ?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
27.09.2012, 13:29 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>
#include <iostream>
 
int main()
{
   namespace dt = boost::gregorian;
   namespace pt = boost::posix_time;
 
   const pt::ptime now = pt::second_clock::universal_time();
   const pt::ptime time = now - dt::days(2);
   std::cout << (now - time).hours() << std::endl;
}
0
Azart11
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 54
29.09.2012, 18:21  [ТС] #4
ещё как-нибудь можно решить?
0
Azart11
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 54
03.10.2012, 17:24  [ТС] #5
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.h>
#include<conio.h>
int v(int year,int mes,int day)
{int mm[]={31,28,31,30,31,30,31,31,30,31,30,31};
if ((year/4)&&(!(year/100)||(year/400)))
{mm[1]=29;
year=year*366;}
else year=year*365;
int i=0;
int sm=0;
while (i<mes)
{sm=sm+mm[i];
i=i+1;}
int res=(year+sm+day)*24;
return res;
}
 
int main()
{
clrscr();
char s;
int day1,mes1,year1,day2,mes2,year2;
cout<<"vvedite pervuy datu:";
cin>>day1>>s>>mes1>>s>>year1;
cout<<"vvedite vtoruy datu:";
cin>>day2>>s>>mes2>>s>>year2;
int ch1,ch2;
ch1=v(day1,mes1,year1);
ch2=v(day2,mes2,year2);
int raz=ch1-ch2;
cout<<"interval "<<raz<<"chasov";
getch();
return 0;
}
Вот моя программа работает не правильно... скажите пожалуйста как исправить...
0
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
03.10.2012, 18:19 #6
C++
1
2
year=year*366;}
else year=year*365;
Ты *все* года умножаешь на 365 или 366.
Тебе нужно часы для каждого года считать отдельно. Кроме того, кол-во часов во всех высокосных годах одинаково, так же как и невысокосных.

Вообще, попробуй так:
Проверь вывод каждой функции.
Проверь программу для разницы в 1 час, потом в 1 день, месяц и так далее.

Используй cout, что бы смотреть промежуточные результаты.
0
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
03.10.2012, 23:00 #7
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
#include <iostream>
#include <ctime>
#include <cstring>
 
void SetDate(tm& date)
{
    memset(&date, 0, sizeof(date));
    std::cout << "Year: ";
    std::cin >> date.tm_year;
    date.tm_year -= 1900;
    std::cout << "Month: ";
    std::cin >> date.tm_mon;
    date.tm_mon -= 1;
    std::cout << "Day: ";
    std::cin >> date.tm_mday;
    std::cout << std::endl;
}
 
int main()
{
    tm date1, date2;
    SetDate(date1);
    SetDate(date2);
    std::cout << difftime(mktime(&date2), mktime(&date1)) / 3600 << std::endl;
    return 0;
}
Добавлено через 11 минут
для дат с 1970 по 2038 год
0
Azart11
1 / 1 / 0
Регистрация: 19.09.2012
Сообщений: 54
05.10.2012, 22:12  [ТС] #8
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
Код:
 
#include<iostream>
 
int v(int day,int mes,int year)
{
int sumday = 0,rez;
for(int y = 1; y < year; y++)
{
  sumday+= 365;
  if( (y/4)&&(!(y/100)||(y/400)) ) sumday++;
}
 
int mm[]={31,28,31,30,31,30,31,31,30,31,30,31};
for( int m = 1; m < mes; m++)
sumday += mm[m-1];
if( mes>= 3 && (year/4)&&(!(year/100)||(year/400)) ) sumday++;
 
rez=(sumday+day)*24;
return rez;
}
 
using namespace std;
int main()
{
char s;
int day1,mes1,year1,day2,mes2,year2;
cout<<"vvedite pervuy datu:";
cin>>day1>>s>>mes1>>s>>year1;
cout<<"vvedite vtoruy datu:";
cin>>day2>>s>>mes2>>s>>year2;
int ch1,ch2;
ch1=v(day1,mes1,year1);
ch2=v(day2,mes2,year2);
int raz=ch1-ch2;
cout<<"interval "<<raz<<" chasov";
 
return 0;
}
при вводе дат 1/1/2011 и 1/1/2012 выдаёт 8784, когда должно быть 8760
0
05.10.2012, 22:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2012, 22:12
Привет! Вот еще темы с ответами:

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

Вычислить разницу между двумя датами - C++
1. есть ли функция которая вычислит сколько прошло например с 1934 до 2014. 2. как вычислить сраж роботы есть год поступления на роботу и...

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

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


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

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

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