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

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

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

Найти количество полных лет, прошедших между двумя датами - C++

11.05.2010, 20:17. Просмотров 1044. Ответов 5
Метки нет (Все метки)

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

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

Вычислить количество дней и количество полных лет между двумя датами - C++
Ввести натуральные числа а(1), b(1), c(1), a(2), b(2), c(2), которые указывают две даты (число, месяц, год). Вычислить: а) количество...

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

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

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

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

5
usernet009
24 / 24 / 1
Регистрация: 28.12.2009
Сообщений: 85
11.05.2010, 20:26 #2
Как даны ? Строкой ? Объектом ? Кучкой переменных ?
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
11.05.2010, 20:34 #3
C
1
2
3
4
5
6
7
  int d1, m1, y1, d2, m2, y2;
  if (m1 < m2) R = y2 - y1;
  else if (m1 > m2) R = y2 - y1 - 1;
  else {  // Месяцы равны
     if (d1 <= d2) R = Y2 - y1;
     else             R = y2 - y1 - 1;    
  }
Это общий принцип. Здесь предполагается, что дата-2 > дата-1
А дальше - подстрой под свое представление дат
0
Zios
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 25
11.05.2010, 23:02  [ТС] #4
строкой
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
11.05.2010, 23:46 #5
Цитата Сообщение от Zios Посмотреть сообщение
строкой
Краткость - сестра таланта. Но на разбор даты в виде строки нужно хоть небольшое, но все-таки присутствие и братика.
ИМХО, задача для новичка - хорошая.
Был бы новичком, решил бы неприменно, но увы...
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,850
12.05.2010, 01:22 #6
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
    
#ifndef max
#define max(A, B) ((A) > (B) ? (A) : (B))
#define min(A, B) ((A) < (B) ? (A) : (B))
#endif
    
#define DATE_LEN 16 
 
int parse_date(const char *s, struct tm *d){
    char *p;
    if ( !s || !*s )
        return -1;
    if ( ( d->tm_mday = atoi(s) ) < 1 || d->tm_mday > 31 )
        return -1;
    if ( ! ( p = strchr(s, '-') ) || ! *(++p) )
        return -1;
    if ( ( d->tm_mon = atoi(p) - 1 ) < 0 || d->tm_mon > 11 )
        return -1;
    if ( ! ( p = strchr(p, '-') ) || ! *(++p) )
        return -1;
    if ( ( d->tm_year = atoi(p) ) < 1970 || d->tm_year > 2037 )
        return -1;
    d->tm_year -= 1900;
    
    return 0;
}
 
int main(void){
    char dateStr[DATE_LEN];
    time_t tA, tB, tD;
    struct tm dA, dB;
    
    printf("Input first date in format dd-mm-yyyy : ");
    if ( ! fgets(dateStr, DATE_LEN, stdin) ){
        perror("fgets");
        exit(1);
    }
    memset(&dA, 0, sizeof(struct tm));
    if ( parse_date(dateStr, &dA) ){
        fprintf(stderr, "Can't parse date!\n");
        exit(1);
    }
    if ( ( tA = mktime(&dA) ) == -1 ){
        perror("mktime");
        exit(1);
    }
    
    printf("Input second date in format dd-mm-yyyy : ");
    if ( ! fgets(dateStr, DATE_LEN, stdin) ){
        perror("fgets");
        exit(1);
    }
    memset(&dB, 0, sizeof(struct tm));
    if ( parse_date(dateStr, &dB) ){
        fprintf(stderr, "Can't parse date!\n");
        exit(1);
    }
    if ( ( tB = mktime(&dB) ) == -1 ){
        perror("mktime");
        exit(1);
    }
    
    tD = max(tA, tB) - min(tA, tB);
    
    printf("Years between this dates: %d\n", tD / 60 / 60 / 24 / 365);
    
    exit(0);
}
0
12.05.2010, 01:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2010, 01:22
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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