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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
web_fox
Сообщений: n/a
#1

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

25.03.2011, 17:02. Просмотров 1391. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2011, 17:02     Калькулятор дат
Посмотрите здесь:

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

Сложение дат - C++
Вообщем при складывании дат имеется кусочек: day=day+d1; while (month==1 &amp;&amp; day&gt;31 || month==3 &amp;&amp; day&gt;31 || month==5 &amp;&amp; day&gt;31 ||...

Складывание дат - C++
Такая проблема: Допустим, есть дата: 09.01.2014, надо прибавить к ней X дней, например, 45. Можно ли это сделать цивилизованным способом?

класс дат - C++
в классе дат(3 поля-год,месяц,день) написать конструктор инициализации строкой вида &quot;год.месяц.день&quot; (например...

Сравнение дат - C++
char data; cout &lt;&lt; &quot;Фильтрация по полю \&quot;дата выдачи\&quot;&quot; &lt;&lt; endl; cout &lt;&lt; &quot;Введите дату в виде \&quot;DD.MM.GGGG\&quot;\n&quot; &lt;&lt; endl; ...

Сумма и разность дат - C++
Есть класс содержащий: год, месяц, день, час, минуты, секунды. Фактически это всё можно было бы заменить структурой tm из time.h, но это...

Чтение входных дат - C++
Доброе время суток Я работаю над домашним заданием по языку си. Программа должна переводить знаки кодированные в utf-8 до utf-16. Саму...

Классы: Разность дат С++ - C++
Народ объясните как переделать эту программу чтобы работала через классы...я просто запутался сам #include &lt;cstdlib&gt; #include...

Сортировка дат по 4 ключам - C++
Есть даты такого формата: Fri, 28 Mar 2014 16:42:58 PDT Fri, 28 Mar 2014 15:16:47 PDT Sat, 29 Mar 2014 13:33:05 PDT Sat, 29 Mar...

Чтение дат из файла - C++
Здравствуйте, задание таково что нужно прочитать из файла даты, выбрать из них весенние, самую позднюю ,раннюю и другое(эти задания не так...

Вычисление разницы дат - C++
Имеется код: char firstDate = &quot;2015-07-09&quot;; char secondDate = &quot;2015-07-07&quot;; char* format = &quot;%Y-%m-%d&quot;; struct tm tm; ...

Чтение дат СТЛ - C++
Здорова! Есть задачка: &quot;Существуют стандартные способы чтения, записи и представления дат под управлением класса locale. Прочитайте о...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Эксперт С++
3042 / 1687 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
25.03.2011, 21:25     Калькулятор дат #5
Цитата Сообщение от Gelloin Посмотреть сообщение
а если обратить во внимание, что у человека не имется достаточных знаний для восприяти приведенного вами варианта?
Вы имеете в виду человека, поклявшегося никогда не открывать учебник на описании файла time.h? Ну так он знал на что шел, давая такую страшную клятву!
А если серьезно, то у меня тоже такое впечатление, что тот, кто разрабатывал файл time.h, был сильно под мухой. Зря Страуструп не написал вместо этого файла что-нибудь человеческое.
Yandex
Объявления
25.03.2011, 21:25     Калькулятор дат
Ответ Создать тему
Опции темы

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