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

Калькулятор дат

25.03.2011, 17:02. Просмотров 3450. Ответов 4
Метки нет (Все метки)


прошу помочь
сложилась такая ситуация что я написал калькулятор дат, но он не просчитывает разность дат точно, но если разделить составные части то все норм))
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;
}
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2011, 17:02
Ответы с готовыми решениями:

Написать функцию-калькулятор дат
Написать функцию-калькулятор дат. Вы вводите две даты (текущую и искомую) и выводите на экран...

Как преобразовать обычный калькулятор в калькулятор использующий класс стек?
#include &lt;iostream&gt; int main(){ int a = 0; int b = 0; char operation; ...

Простой калькулятор и калькулятор с парсингом
Ребят я совсем не давно только начал изучать сишку, решил написать простенький калькулятор который...

Калькулятор дат с заданным шагом
Здравствуйте! Прошу помощи, нужно рассчитать даты с заданным шагом. Операция: - вычитание...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
4
Заблокирован
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;
}
2
Gelloin
25.03.2011, 19:54 3
а если обратить во внимание, что у человека не имется достаточных знаний для восприяти приведенного вами варианта?
Заблокирован
25.03.2011, 21:13 4
Gelloin,
а если обратить во внимание, что у человека не имется достаточных знаний для восприяти приведенного вами варианта?
Т.Е.:
А если обратить ___ внимание на то, что у человека не имеется достаточных знаний для восприятия приведенного вами варианта?

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

web_fox,
Ваш опус весьма красноречиво указывает на то, что вы к "восприяти" готовы.
0
Эксперт С++
3206 / 1733 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
25.03.2011, 21:25 5
Цитата Сообщение от Gelloin Посмотреть сообщение
а если обратить во внимание, что у человека не имется достаточных знаний для восприяти приведенного вами варианта?
Вы имеете в виду человека, поклявшегося никогда не открывать учебник на описании файла time.h? Ну так он знал на что шел, давая такую страшную клятву!
А если серьезно, то у меня тоже такое впечатление, что тот, кто разрабатывал файл time.h, был сильно под мухой. Зря Страуструп не написал вместо этого файла что-нибудь человеческое.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2011, 21:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Вычисление возраста человека. Калькулятор дат
Сколько б я не гуглил, сколько б не искал, всё равно не смог найти какой же код нужно написать,...

Сравнение двух дат и вывод дат находящихся между ними
Здравствуйте! Тут такое дело, вводятся две определенные ДАТЫ в Edit1 и Edit2 в формате...

Поиск дат в периоде дат (целиком или частично)
Добрый день! У Меня есть проблема, не могу подобрать формулу по поиску определенного периода даты...

Есть ли в VBA функция, позволяющая определить пересечение одного диапазона дат с другим диапазоном дат?
Привет Все! Задача такова: имеем 1 диапазон даты, например, 01.10.10-30.10.10 имеем 2 диапазон...


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

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

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