Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 25
1

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

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

Даны две даты (число, месяц, год). Найти количество полных лет, прошедших между этими двумя датами.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2010, 20:17
Ответы с готовыми решениями:

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

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

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

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

5
26 / 26 / 5
Регистрация: 28.12.2009
Сообщений: 85
11.05.2010, 20:26 2
Как даны ? Строкой ? Объектом ? Кучкой переменных ?
0
Day
1176 / 986 / 83
Регистрация: 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
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 25
11.05.2010, 23:02  [ТС] 4
строкой
0
Day
1176 / 986 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
11.05.2010, 23:46 5
Цитата Сообщение от Zios Посмотреть сообщение
строкой
Краткость - сестра таланта. Но на разбор даты в виде строки нужно хоть небольшое, но все-таки присутствие и братика.
ИМХО, задача для новичка - хорошая.
Был бы новичком, решил бы неприменно, но увы...
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11057 / 7012 / 1658
Регистрация: 25.07.2009
Сообщений: 12,776
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2010, 01:22

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

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

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

Вычислить количество дней, прошедших между двумя датами
Даны две тройки чисел: A1, В1, С1, A2, В2, С2 которые обозначают две даты. Вычислить:...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru