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

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

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

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

25.03.2011, 17:02. Просмотров 1648. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2011, 17:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Калькулятор дат (C++):

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

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

Складывание дат - 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++
Вообщем при складывании дат имеется кусочек: 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 ||...

4
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;
}
2
Gelloin
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 1
25.03.2011, 19:54 #3
а если обратить во внимание, что у человека не имется достаточных знаний для восприяти приведенного вами варианта?
0
IrineK
Заблокирован
25.03.2011, 21:13 #4
Gelloin,
а если обратить во внимание, что у человека не имется достаточных знаний для восприяти приведенного вами варианта?
Т.Е.:
А если обратить ___ внимание на то, что у человека не имеется достаточных знаний для восприятия приведенного вами варианта?

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

web_fox,
Ваш опус весьма красноречиво указывает на то, что вы к "восприяти" готовы.
0
Mr.X
Эксперт С++
3060 / 1705 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
25.03.2011, 21:25 #5
Цитата Сообщение от Gelloin Посмотреть сообщение
а если обратить во внимание, что у человека не имется достаточных знаний для восприяти приведенного вами варианта?
Вы имеете в виду человека, поклявшегося никогда не открывать учебник на описании файла time.h? Ну так он знал на что шел, давая такую страшную клятву!
А если серьезно, то у меня тоже такое впечатление, что тот, кто разрабатывал файл time.h, был сильно под мухой. Зря Страуструп не написал вместо этого файла что-нибудь человеческое.
0
25.03.2011, 21:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2011, 21:25
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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