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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.76
Spirit370
 Аватар для Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
18.02.2014, 02:24     Программа должна писать сколько лет, месяцев, дней, часов, минут, секунд прожил человек #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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
#include <string>
#include <vector>
#include <windows.h>
using namespace ::std;
 
void main () 
{
 
    //Криллица--------------------------
      setlocale( LC_ALL,"Russian" );
      SetConsoleOutputCP(1251);
      SetConsoleCP(1251);
    //Криллица--------------------------
    
    //---------Переменные-----------------    
      vector<int>month(12); // 12 месяцев
      
      int oldyear = 0;  // год
      int oldmonths = 0;// месяц
      int oldday = 0;   // день
 
      int thisyear = 0;  // Этот год
      int thismonths = 0;// Этот месяц
      int thisday = 0;   // Этот день
      
      int sumyear = 0; //Всего лет
      int sumday = 0;  //Всего дней
      int summin = 0;  //Всего минут
      int summonth = 0;//Всего месяцев
      int sumhours = 0;//Всего часов
      int sumsec = 0;  //Всего секунд
    //---------Переменные------------------    
    
    //Заполнение вектора----------
      month[0] = 31;  //Январь
      month[1] = 28;  //Февраль
      month[2] = 31;  //Март
      month[3] = 30;  //Апрель
      month[4] = 31;  //Май
      month[5] = 30;  //Июнь
      month[6] = 31;  //Июль
      month[7] = 31;  //Август
      month[8] = 30;  //Сентябрь
      month[9] = 31; //Октябрь
      month[10] = 30; //Ноябрь
      month[11] = 31; //Декабрь
    //Заполнение вектора----------
    
    //------------------Ввод----------------------   
    cout << "Введите вашу дату рождения через пробел(31.12.1997) ->>> ";
    cin >> oldday >> oldmonths >> oldyear;
    cout << "Введите сегодняшнюю дату через пробел(17.02.2014) ->>> ";
    cin >> thisday >> thismonths >> thisyear;
    //------------------Ввод----------------------
    
    //-------------Расчёты------------------------
      //-------------------Года---------------------
        sumyear = thisyear - oldyear;
        if (oldmonths>thismonths)  {sumyear--;}                                    
        if (oldmonths==thismonths) {if (oldday>thisday) {sumyear--;}}
      //-------------------Года---------------------
      
      //-------------------Месяцы---------------------
         summonth = (12*sumyear)+thismonths;
      //-------------------Месяцы---------------------
    
      //-------------------Дни---------------------
         sumday = 365*sumyear+(thisday-1);
         for (int i = 0;i<thismonths-1;i++) {sumday += month[i];} 
         for (int i = oldyear;i<thisyear-1;i++) {if (i%4==0) {sumday++;}}//Весокосный год
      //-------------------Дни---------------------
      
      //-------------------Часы---------------------
        sumhours = sumday * 24;
      //-------------------Часы---------------------
         
      //-------------------Минуты---------------------
        summin = sumhours * 60;
      //-------------------Минуты---------------------
         
      //-------------------Секунды---------------------
        sumsec = summin * 60;
      //-------------------Секунды---------------------
         
    //-------------Расчёты------------------------
    
    //------------Вывод----------------------
    cout << "                \nВы прожили\n";
    
    
    cout << sumyear << " Лет.\n";
    cout << summonth << " Месяц.\n";
    cout << "                Не считая этот день:\n";
    cout << sumday << " День.\n";
    cout << sumhours << " Час.\n";
    cout << summin << " Минута.\n";
    cout << sumsec << " Секунда.\n";
    //------------Вывод----------------------  
    
    
    
    system("PAUSE");
 
}
Найдите плиз, промахи в расчётах =)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2014, 02:24     Программа должна писать сколько лет, месяцев, дней, часов, минут, секунд прожил человек
Посмотрите здесь:

сколько человек прожил месяцев, дней, часов, минут, секунд C++
Сколько дней прожил человек C++
C++ количество лет месяцев дней между датами
C++ Какое время будут показывать часы через р часов q минут r секунд?
Количество секунд в количество суток, часов, минут, секунд C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
18.02.2014, 03:03     Программа должна писать сколько лет, месяцев, дней, часов, минут, секунд прожил человек #2
http://www.codeproject.com/Articles/...es-in-Years-Mo

Думаю, разберешься, там вполне наглядно все расписано
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
18.02.2014, 10:42     Программа должна писать сколько лет, месяцев, дней, часов, минут, секунд прожил человек #3
Цитата Сообщение от Spirit370 Посмотреть сообщение
Найдите плиз, промахи в расчётах =)
Подробно не смотрел, но как минимум ошибка трактовки что такое високосный год. Посмотрите на википедии что это такое: не каждый 4 год является високосным (например 2100 не будет).
Spirit370
 Аватар для Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
18.02.2014, 15:27  [ТС]     Программа должна писать сколько лет, месяцев, дней, часов, минут, секунд прожил человек #4
Цитата Сообщение от mustimur Посмотреть сообщение
Подробно не смотрел, но как минимум ошибка трактовки что такое високосный год. Посмотрите на википедии что это такое: не каждый 4 год является високосным (например 2100 не будет).
Улучшенная версия високосного года =)
C++
1
2
3
4
5
//-------------------Дни---------------------
         sumday = 365*sumyear+(thisday-1);
         for (int i = 0;i<thismonths-1;i++) {sumday += month[i];} 
         for (int i = oldyear;i<thisyear-1;i++) {if (i%4==0) {sumday++;if (i%100 == 0) {if (i%400 != 0) {sumday--;}}}}//Весокосный год
      //-------------------Дни---------------------
Yandex
Объявления
18.02.2014, 15:27     Программа должна писать сколько лет, месяцев, дней, часов, минут, секунд прожил человек
Ответ Создать тему
Опции темы

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