Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
EJIEKTPO_4
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 3
1

Количество прожитых дней

23.04.2013, 12:37. Просмотров 1060. Ответов 8
Метки нет (Все метки)

Делаю вот так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main ()
{
setlocale(LC_ALL, "Russian");
int da1,db1,dv1,da2,db2,dv2;
 
cout<<"Введите дату своего рождения в числах через пробел (Например 10 1 1991)\n";
cin>>da1>>db1>>dv1;
cout<<"Введите текущую дату\n";
cin>>da2>>db2>>dv2;
dv2=((dv2-dv1)*365)+((db2-db1)*30+((db2-db1)/2))+(da2-da1);
cout<<"Вы прожили "<<dv2<<"дней\n";
}

Что сделать чтобы точнее показывала?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 12:37
Ответы с готовыми решениями:

Количество прожитых человеком дней
Доброго времени суток. Помогите пожалуйста решить такую задачку: Определить...

Расчет количество дней прожитых со дня рождения
Сабж. Может есть у кого исходный код который рассчитывает количество прожитых...

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

Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный
Дан номер года (положительное целое число). Определить количество дней в этом...

По дате рождения и сегодняшней дате посчитать количество прожитых часов (используя классы)
С помощью классов,создать программу, которая считает сколько часов вы прожили....

8
dalay_lama
79 / 79 / 50
Регистрация: 22.09.2012
Сообщений: 493
23.04.2013, 12:51 2
Цитата Сообщение от EJIEKTPO_4 Посмотреть сообщение
Что сделать чтобы точнее показывала?
В каком смысле точнее? что-бы со временем показывало?
0
EJIEKTPO_4
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 3
23.04.2013, 13:00  [ТС] 3
Нет. Точнее дни показывала.
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
23.04.2013, 13:45 4
EJIEKTPO_4, без библиотечных функций для работы с датами Вам не обойтись. См. например тут
0
IrineK
Заблокирован
23.04.2013, 19:27 5
Если точно, то вот так:

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
#include <iostream>
#include <ctime>
 
using std::cout;
using std::cin;
 
const int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
 
bool leapYear(int testYear)
{   if (testYear % 400 == 0 || (testYear % 100 != 0 && testYear % 4 == 0))
        return true; // a leap year
    return false; // not a leap year
}
 
int main()
{   int curYear, curDays, birthYear, birthMonth, birthDay, i, daysAlive;
    
    time_t now;
    struct tm *today;
    time (&now);
    today = localtime(&now);
    curYear = today->tm_year + 1900;    //текущий год
    curDays = today->tm_yday;   //прошло дней с начала текущего года
    
    cout<<"Date of birth:\n";
    cout<<"\tDay Month Year:\t";
    cin>>birthDay>>birthMonth>>birthYear;
 
    //первый год жизни
    daysAlive = days[birthMonth-1]-birthDay+1;  //прожито в первый месяц рождения
    for(i=birthMonth;i<12;i++)
        daysAlive += days[i];                   //прожито до конца первого года
    if(leapYear(birthYear) && birthMonth<3) daysAlive++;    //учет высокосного года
 
    //со второго и до прошлого года
    for(i=birthYear+1; i<curYear; i++)          //прожито в каждый последующий год
    {   if(leapYear(i)) daysAlive += 366;
        else            daysAlive += 365;
    }
 
    //текущий год
    daysAlive += curDays;                       //прожито в текущем году
 
    //результат
    cout<<"\nYou have lived "<<daysAlive<<" days already.";
    
    cin.sync();cin.get();
    return 0;
}
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
23.04.2013, 21:38 6
IrineK, зачем все эти манипуляции с високосностью?
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
#include <ctime>
#include <iostream>
 
int main()
{
    time_t now;
    time(&now);
 
    tm birth;
 
    birth.tm_hour = 0;
    birth.tm_min = 0;
    birth.tm_sec = 0;
 
    std::cout << "input year (since 1900):" << std::flush;
    std::cin >> birth.tm_year;
    std::cout << "input month (0..11):" << std::flush;
    std::cin >> birth.tm_mon;
    std::cout << "input day (1..31):" << std::flush;
    std::cin >> birth.tm_mday;
 
    time_t b = mktime( &birth );
 
    double sec = difftime( now, b );
 
    int days = sec / 86400;
 
    std::cout << "days on Earth: " << days << std::endl;
 
    system("pause");
    return 0;
}
1
IrineK
Заблокирован
24.04.2013, 01:39 7
IrineK, зачем все эти манипуляции с високосностью?
Многие мои знакомые родились раньше 1970 года. Наверное, поэтому )
См.: http://www.cplusplus.com/reference/ctime/time/
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.04.2013, 09:33 8
IrineK, главное, чтобы не раньше 1902 Потому что difftime и с отрицательными значениями time_t неплохо справляется.
0
IrineK
Заблокирован
25.04.2013, 03:58 9
Нужно будет как-то проверить.
Помню по опыту, что были проблемы.
0
25.04.2013, 03:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2013, 03:58

Вычислить количество дней и количество полных лет между двумя датами
Ввести натуральные числа а(1), b(1), c(1), a(2), b(2), c(2), которые указывают...

Вывести число дней в заданном году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней
11 Дан номер некоторого года (положительное целое число). Вывести число дней в...

Определить количество дней в году
Дан номер года (положительное целое число). Определить количество дней в этом...


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

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

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