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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 5.00
Kotowed
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
#1

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

18.07.2011, 23:32. Просмотров 4700. Ответов 11
Метки нет (Все метки)

Даны натуральные числа
a1, b1 , c1 (число, месяц, год)
a2, b2, c2 (число, месяц, год)

Вычислить количество дней, полных месяцев, и полных лет, прошедших между датами ( на языке Си).

Добавлено через 3 часа 35 минут
up up up
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2011, 23:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить количество дней, полных месяцев, и полных лет, прошедших между датами (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.07.2011, 23:34 #2
Kotowed, в чем проблема? какие конкретные вопросы?
0
Kotowed
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
18.07.2011, 23:40  [ТС] #3
Maxwe11, да не знаю с чего начать Не могли бы вы подтолкнуть ?
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.07.2011, 23:46 #4
создайте структуру Date, а потом подумайте как отнимать даты
0
Kotowed
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
19.07.2011, 01:02  [ТС] #5
Maxwe11, хм, и что дальше? О_о
0
asics
Freelance
Эксперт С++
2847 / 1784 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
19.07.2011, 01:07 #6
Цитата Сообщение от Kotowed Посмотреть сообщение
хм, и что дальше?
PROFIT
0
Kotowed
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
19.07.2011, 14:02  [ТС] #7
asics, Вот, что получилось. Требуется корректировка или исправления с вашей стороны.

C
1
2
3
4
5
6
7
8
9
int IntFromDMY(int day,  int month, int year )
{
  int m = (month - 14) / 12;
  return ((1461 * (year + 4800 + m)) / 4 + (367 * (month - 2 - 12 * m)) / 12 - (3 * ((year + 4900 + m) / 100)) / 4 + day - 32075) - 1757585;
}
//------
int d1 = IntFromDMY(1, 1, 2012);
int d2 = IntFromDMY(31, 12, 2012);
int ddif = d2 - d1;
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
19.07.2011, 14:09 #8
Вот, правда там C++, но алгоритм нахождения разности дат по-моему должен быть понятен (см. operator-()).
0
Kotowed
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
19.07.2011, 14:27  [ТС] #9
Kastaneda, а не могли бы вы помочь, а то я с С++ даже не знакомился?
0
OstapBender
583 / 521 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
19.07.2011, 14:46 #10
Kotowed, и что это такое у вас "получилось" ?
напиши структуру из 3- элементов. объяви 2 даты и вычти их данные друг из друга , блин так сложно?
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
19.07.2011, 14:56 #11
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
#include <stdio.h>
#include <string.h>
 
char* difference(int day1,  int month1, int yea1r, int day2,  int month2, int year2);
 
int main()
{
    int d1,m1,y1,d2,m2,y2;
    printf("Enter first date (day month year): ");
    scanf("%d %d %d",&d1,&m1,&y1);//данные вводятся через пробел, например 10 6 2000
    printf("Enter second date (day month year): ");
    scanf("%d %d %d",&d2,&m2,&y2);
    printf("Date1 - Date2 = %s\n",difference(d1,m1,y1,d2,m2,y2));
    return 0;
}
 
int leap(int y)
{
    return (int)((y % 4 == 0 && y% 100 != 0) || y % 400);
}
 
int maxday(int month,int year)
{
    int days[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
    if(leap(year))days[1]=29;
    return days[month-1];
}
 
char* difference(int day1,  int month1, int year1, int day2,  int month2, int year2)
{
    int d,m,y;
    char date[128];
    if(year1>=year2) {
        y=year1-year2;
        if(month1>month2) {
            m=month1-month2;
            d=day1+maxday(month2,year2)-day2;
            if(d>maxday(month2,year2))d-=maxday(month2,year2);
            else --m;
            --y;
        } else {
            m=12-month1+month2;
            d=day2+maxday(month1,year1)-day1;
            if(d>maxday(month1,year1))d-=maxday(month1,year1);
            else --m;
        }
    } else {
        y=year2-year1;
        if(month1>month2) {
            m=12-month1+month2;
            d=day1+maxday(month2,year2)-day2;
            if(d>maxday(month2,year2))d-=maxday(month2,year2);
            else --m;
            --y;
        } else {
            m=month2-month1;
            d=maxday(month1,year1)-day1+day2;
            if(d>maxday(month1,year1))d-=maxday(month1,year1);
            else --m;
        }
    }
    sprintf(date,"%d days, %d month, %d years\n",d,m,y);
    return date;
}
проверку на корректность вводимых данных сам допишешь.
0
asics
Freelance
Эксперт С++
2847 / 1784 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
19.07.2011, 14:58 #12
По днях
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
#include <stdio.h>
 
typedef struct{
  int Day, Month, Year;
}date;
 
int check(int i){
  static int mnth[]  = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  return mnth[--i];
}
 
extern "C" int abs(int a);
 
void make_date(date *d, int nn, int mm, int yy){
  d->Day   = nn;
  d->Month = mm;
  d->Year  = yy;
}
 
int sub(date d1, date d2)
{
  int diff = 0, i;
  int from = d1.Month, to = d2.Month;
  int diffyear = abs(d2.Year - d1.Year);
  if(!diffyear)
    for(i = from; i < to; i++)
      diff += check(i);
    else{
    for(i = from; i <= 12; i++)
      diff += check(i);
    for(i = 1; i < to; i++)
      diff += check(i);
    }
    diff -= d1.Day;
    diff += d2.Day;
    diff += ((diffyear > 1)?(diffyear - 1):(0))*365;
    diff+=diffyear/4;
    for(i = d2.Year - diffyear; i <= d2.Year; i++){
      if(((i%4==0) && !(i%100==0))||(i%400==0))
        diff += 1; break;
    }
    return diff;
}
 
int main(){
  date d1, d2;
  make_date(&d1, 31, 12, 1999);
  make_date(&d2, 1, 1, 2000);
  printf("%d", sub(d1, d2));
  return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2011, 14:58
Привет! Вот еще темы с ответами:

Определить значение угла для минутной стрелки, а также количество полных часов и полных минут - C++
вот задание Часовая стрелка образует угол у с лучом, проходящим через центр и через точку, соответствующую 12 часам на циферблате. 0&lt;у ≤...

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

Идет n-я секунда суток. Определить, сколько полных часов и полных минут прошло до этого момента. - C++
Идет n-я секунда суток. Определить, сколько полных часов и полных минут прошло до этого момента.

Идет K-ая секунда суток. Определить, сколько полных часов и полных минут прошло к этому моменту. - C++
помогите, не пойму как это подсчитать


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.07.2011, 14:58
Ответ Создать тему
Опции темы

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