#cpp
Вообщем, ввожу данные 1-й даты и 2-й даты и пытаюсь найти разницу между ними в днях, решил для начала найти разницу в днях в месяцах и годах, месяцы и годы перевожу в дни и все суммирую, но кол-во месяцев не подсчитывает #include#include using namespace std; int main() { int year_user, mon_user, day_user; int current_year, current_mon, current_day; int num_days, num_mon=0, num_years; int leap_year = 0, leap_like = 0; int m, m1, i, j; int M[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; cout<<"Введите год месяц и день вашего дня рождения(в формате ГГГГ М Д):"< >year_user>>mon_user>>day_user; cout<<"Ваша дата рождения:"< >current_year>>current_mon>>current_day; cout<<"Желаемая дата:"< = current_mon) { int m = mon_user; int m1 = current_mon; } else { int m = current_mon; int m1 = mon_user; } //рассчитываем количество лишних месяцев for(i=m; i Ответы
Ответ 1
Я бы не мучил эти дни, месяцы и годы... Есть такое хорошее понятие как юлианская дата с хорошо разработанным алгоритмом расчета, и ваша задача - просто вычисление разности двух таких дат. Если вы не планируете работать с датами до введения григорианского календаря и учитывать введение в России григорианского в 1918 году :), то вам достаточно запрограммировать это: Как видите, даже ни одного условного перехода :)Ответ 2
Чтобы найти возраст в днях, можно готовую библиотеку использовать, к примеру, date.h для C++11/c++14: #include#include "date.h" int main() { using namespace date; sys_days birthday; if(!(std::cin >> parse("%Y %m %d", birthday))) return 1; // error sys_days today = floor (std::chrono::system_clock::now()); std::cout << (today - birthday).count() << std::endl; } Пример: $ g++ -std=c++14 -I/path/to/date *.cc $ echo 1982 6 25 | ./a.out 12864 Вот пример, который принимает во внимание время дня.
Комментариев нет:
Отправить комментарий