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

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

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

Студворк — интернет-сервис помощи студентам
Даны две даты (число, месяц, год). Найти количество полных лет, прошедших между этими двумя датами.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.05.2010, 20:17
Ответы с готовыми решениями:

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

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

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

5
 Аватар для usernet009
26 / 26 / 5
Регистрация: 28.12.2009
Сообщений: 85
11.05.2010, 20:26
Как даны ? Строкой ? Объектом ? Кучкой переменных ?
0
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
11.05.2010, 20:34
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  [ТС]
строкой
0
Day
 Аватар для Day
1180 / 990 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
11.05.2010, 23:46
Цитата Сообщение от Zios Посмотреть сообщение
строкой
Краткость - сестра таланта. Но на разбор даты в виде строки нужно хоть небольшое, но все-таки присутствие и братика.
ИМХО, задача для новичка - хорошая.
Был бы новичком, решил бы неприменно, но увы...
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
12.05.2010, 01:22
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
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 которые обозначают две даты. Вычислить: a) количество дней, прошедших между датами; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru