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

Калькулятор дат - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
web_fox
Сообщений: n/a
25.03.2011, 17:02     Калькулятор дат #1
прошу помочь
сложилась такая ситуация что я написал калькулятор дат, но он не просчитывает разность дат точно, но если разделить составные части то все норм))
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 <iostream>
using namespace std;
#include <conio.h>
int main()
{
    static const int DaysMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  
    const int DaysYear = 365;
    int DayEnd = 0;  
    int TotalDays = 0;
    int DayEnd2 = 0;  
    int TotalDays2 = 0;
    int Year, Year2, Month, Month2, Day, Day2; //переменные для ввода дат
    cout<<"Example entry date: 'YYYY' 'MM' 'DD'\n \n";
    cout<<"Enter the year of birth: ";  //ввод года рождения    
    cin>>Year;
    cout<<"Enter birth month: ";  //ввод месяца рождения
    cin>>Month;
    cout<<"Enter the birthday: ";  //ввод дня рождения
    cin>>Day;
    cout<<"\n";
 
    cout<<"Enter today's year: ";  //ввод идущего года
    cin>>Year2;
    cout<<"Enter today's month: ";  //ввод  идущего месяца
    cin>>Month2;
    cout<<"Enter today: ";  //ввод сего дня 
    cin>>Day2; cout<<"\n \n";
 
    int diffyear, get, have;
    diffyear=(Year2-Year-1)*DaysYear;
    get=(Year2-Year)/4;  //просчет числа високосных годов
    have=get+diffyear;
    for(int i = 0; i < Month - 1; i++)
    {
       TotalDays += DaysMonth[i];  
    }
    TotalDays += Day; 
    DayEnd = DaysYear - TotalDays;
    
    for(int j = 0; j < Month2 - 1; j++)
    {
       TotalDays2 += DaysMonth[j];  
    }
    TotalDays2 += Day2; 
    DayEnd2 = DaysYear - TotalDays2;
    int days;
    days=have+DayEnd-DayEnd2;
    cout<<"you have lived: "<<days<<" days\n";
    getche();
    return 0;
}
Добавлено через 14 минут
нет вот код, погрешность 2 дня
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 <iostream>
using namespace std;
#include <conio.h>
int main()
{
    static const int DaysMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  
    const int DaysYear = 365;
    int DayEnd = 0;  
    int TotalDays = 0;
    int DayEnd2 = 0;  
    int TotalDays2 = 0;
    int Year, Year2, Month, Month2, Day, Day2; //ïåðåìåГ*Г*ûå äëÿ ââîäГ* Г¤Г*ГІ
    cout<<"Example entry date: 'YYYY' 'MM' 'DD'\n \n";
    cout<<"Enter the year of birth: ";  //ââîä ãîäГ* ðîæäåГ*ГЁГї    
    cin>>Year;
    cout<<"Enter birth month: ";  //ââîä ìåñÿöГ* ðîæäåГ*ГЁГї
    cin>>Month;
    cout<<"Enter the birthday: ";  //ââîä Г¤Г*Гї ðîæäåГ*ГЁГї
    cin>>Day;
    cout<<"\n";
 
    cout<<"Enter today's year: ";  //ââîä èäóùåãî ãîäГ*
    cin>>Year2;
    cout<<"Enter today's month: ";  //ââîä  ГЁГ¤ГіГ№ГҐГЈГ® ìåñÿöГ*
    cin>>Month2;
    cout<<"Enter today: ";  //ââîä Г±ГҐГЈГ® Г¤Г*Гї 
    cin>>Day2; cout<<"\n \n";
 
    int diffyear, get, have;
    diffyear=(Year2-Year)*DaysYear;
    get=(Year2-Year)/4;  //ïðîñ÷åò Г·ГЁГ±Г«Г* âèñîêîñГ*ûõ ãîäîâ
    have=get+diffyear;
    for(int i = 0; i < Month - 1; i++)
    {
       TotalDays += DaysMonth[i];  
    }
    TotalDays += Day; 
    DayEnd = DaysYear - TotalDays;
    
    for(int j = 0; j < Month2 - 1; j++)
    {
       TotalDays2 += DaysMonth[j];  
    }
    TotalDays2 += Day2; 
    DayEnd2 = DaysYear - TotalDays2;
    int days;
    days=have+DayEnd-DayEnd2;
    cout<<"you have lived: "<<days<<" days\n";
    getche();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2011, 17:02     Калькулятор дат
Посмотрите здесь:

C++ Сумма и разность дат
Чтение входных дат C++
C++ класс дат
C++ Сложение дат
C++ Чтение дат СТЛ
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
25.03.2011, 17:12     Калькулятор дат #2
Все немного проще, если использовать возможности <time.h>:

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
#include <stdio.h>
#include <conio.h>
#include <time.h>
 
int main ()
{
time_t rawtime, then, now;
struct tm * timeinfo;
int year,month, day, hour;
double dif;
 
 printf ("Enter year: "); scanf ("%d",&year);
 printf ("Enter month (number): "); scanf ("%d",&month);
 printf ("Enter day: "); scanf ("%d",&day);
 printf ("Enter hour: "); scanf ("%d",&hour);
 
time ( &rawtime );
timeinfo = localtime ( &rawtime );
timeinfo->tm_year = year - 1900;
timeinfo->tm_mon = month - 1;
timeinfo->tm_mday = day;
timeinfo->tm_hour = hour;
 
time (&now);
then = mktime (timeinfo);
dif = difftime (now, NULL) + difftime(NULL,then); //in seconds
 
dif = dif/3600.0;//in hours
printf ("\n %10.1lf hours have passed by since\n",dif);
 
dif = dif/24; //in days
printf ("\n %10.1lf days have passed by since\n",dif);
 
getch();
return 0;
}
Gelloin
Сообщений: n/a
25.03.2011, 19:54     Калькулятор дат #3
а если обратить во внимание, что у человека не имется достаточных знаний для восприяти приведенного вами варианта?
IrineK
Заблокирован
25.03.2011, 21:13     Калькулятор дат #4
Gelloin,
а если обратить во внимание, что у человека не имется достаточных знаний для восприяти приведенного вами варианта?
Т.Е.:
А если обратить ___ внимание на то, что у человека не имеется достаточных знаний для восприятия приведенного вами варианта?

Если русский - ваш родной язык, то возникают опасения, что "восприяти" никогда не появится.

web_fox,
Ваш опус весьма красноречиво указывает на то, что вы к "восприяти" готовы.
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,691
25.03.2011, 21:25     Калькулятор дат #5
Цитата Сообщение от Gelloin Посмотреть сообщение
а если обратить во внимание, что у человека не имется достаточных знаний для восприяти приведенного вами варианта?
Вы имеете в виду человека, поклявшегося никогда не открывать учебник на описании файла time.h? Ну так он знал на что шел, давая такую страшную клятву!
А если серьезно, то у меня тоже такое впечатление, что тот, кто разрабатывал файл time.h, был сильно под мухой. Зря Страуструп не написал вместо этого файла что-нибудь человеческое.
Yandex
Объявления
25.03.2011, 21:25     Калькулятор дат
Ответ Создать тему
Опции темы

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