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

Разница в днях - C++

Восстановить пароль Регистрация
 
Eko20
0 / 0 / 0
Регистрация: 29.02.2012
Сообщений: 54
25.10.2013, 21:53     Разница в днях #1
Найти разницу в днях между двумя заданными датами. Даты вводить с клавиатуры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.10.2013, 23:04     Разница в днях #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
#include<time.h>
#include<cstring>
 
int main()
{
    char from[64], till[64];
    struct tm tm_from, tm_till;
    memset(&tm_from, 0, sizeof(struct tm));
    memset(&tm_till, 0, sizeof(struct tm));
    std::cout<<"From: ";
    std::cin.getline(from, sizeof(from));
    std::cout<<"Till: ";
    std::cin.getline(till, sizeof(till));
    strptime(from, "%Y.%m.%d", &tm_from);
    strptime(till, "%Y.%m.%d", &tm_till);
    std::cout<<difftime(mktime(&tm_till), mktime(&tm_from))/86400<<std::endl;
    return 0;
}
Eko20
0 / 0 / 0
Регистрация: 29.02.2012
Сообщений: 54
12.11.2013, 00:58  [ТС]     Разница в днях #3
матерится на 15 и 16 строки.
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
12.11.2013, 01:11     Разница в днях #4
Цитата Сообщение от Eko20 Посмотреть сообщение
матерится на 15 и 16 строки.
Ругается на то, что функции не находит? strptime нет в стандарте С, поэтому под виндой в таком виде, скорее всего, не скомпилируется. Под Linux - норм.
Eko20
0 / 0 / 0
Регистрация: 29.02.2012
Сообщений: 54
12.11.2013, 01:16  [ТС]     Разница в днях #5
ну да. пишет что не объявлено strptime. у меня винда , то есть не пойдет у меня что ли?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
12.11.2013, 01:23     Разница в днях #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <boost/date_time/gregorian/gregorian.hpp>
#include <iostream>
#include <cstddef>
#include <cmath>
 
int main()
{
    std::size_t day1, month1, year1, day2, month2, year2;
    std::cin >> day1 >> month1 >> year1 >> day2 >> month2 >> year2;
    boost::gregorian::date date1(year1, month1, day1), date2(year2, month2, day2);
    std::cout << std::abs(date2 - date1) << std::endl;
}
Добавлено через 43 секунды
Цитата Сообщение от Eko20 Посмотреть сообщение
у меня винда , то есть не пойдет у меня что ли?
как только Microsoft примет POSIX стандарт
Yandex
Объявления
12.11.2013, 01:23     Разница в днях
Ответ Создать тему
Опции темы

Текущее время: 05:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru