


Помогите по програмированию c++
Написать программу для определения Вашего возвраста в днях.
Т.е. с даты Вашего рождения(например с 20.01.1997) по 06.02.2025.
Использовать только года, месяца и дни.
уже 2 день пытаюсь решить не как не пойму что надо сделать
#include <iostream>
using namespace std;
class Date {
int day{};
int month{};
int year{};
bool is_leap(int year) {
if (year % 4) return false;
if (0 == year % 400) return true;
return year % 100;
}
friend istream& operator>>(istream& inp, Date& d) {
char delim;
return inp >> d.day >> delim >> d.month >> delim >> d.year;
}
friend bool operator<(const Date& a, const Date& b) {
if (a.year < b.year) return true;
if (a.year == b.year) {
if (a.month < b.month) return true;
if (a.month == b.month) return a.day < b.day;
}
return false;
}
friend bool operator==(const Date& a, const Date& b) {
return a.year == b.year && a.month == b.month && a.day == b.day;
}
friend int operator-(const Date& a, const Date& b) {
if (a == b) return 0;
Date l{ a };
Date r{ b };
if (b < a) swap(l, r);
auto days{ 0 };
for (auto i = l; i < r; ++i, ++days) { ; }
return days;
}
public:
Date& operator++() {
if (day < 28) ++day;
else if (day == 28) {
if (month != 2) ++day;
else if (is_leap(year)) ++day;
else { ++month; day = 1; }
}
else if (day == 29 && month != 2) ++day;
else if (day == 30) {
if (month == 2) { ++month; day = 1; }
else if (month != 4 && month != 6 && month != 9 && month != 11) ++day;
else { ++month; day = 1; }
}
else {
if (month == 12) { ++year; month = day = 1; }
else { ++month; day = 1; }
}
return *this;
}
};
int main() {
Date a, b;
cin >> a >> b;
cout << a - b << '\n';
}
Надо использовать метку времени == timestamp
Вычислить (или найти) количество секунд в году и дне и найти разницу между датами в секундах. Это чтобы не путаться в високосных годах и т.д. Как получить кол-во секунд - вот пример.
#include <iostream>
#include <chrono>
int main()
{
const auto p1 = std::chrono::system_clock::now();
std::cout << "секунд с начала эры: "
<< std::chrono::duration_cast<std::chrono::seconds>(
p1.time_since_epoch()).count() << '\n';
}
Надо ещё дату перевести в метку времени - есть готовая функция.
(P.s сгенерировано с помощью ИИ. Т.к сам в этой теме особо не шарю, надеюсь, что поможет)
#include <iostream>
#include <ctime>
// Функция для проверки високосного года
bool isLeapYear(int year) {
if (year % 4 != 0) {
return false;
} else if (year % 100 != 0) {
return true;
} else {
return (year % 400 == 0);
}
}
// Функция для получения количества дней в месяце
int daysInMonth(int month, int year) {
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
return 31;
case 4: case 6: case 9: case 11:
return 30;
case 2:
return isLeapYear(year) ? 29 : 28;
default:
return 0;
}
}
// Функция для вычисления количества дней между двумя датами
int calculateDaysBetweenDates(int birthDay, int birthMonth, int birthYear,
int currentDay, int currentMonth, int currentYear) {
int totalDays = 0;
// Добавляем дни из полных годов между датами
for (int year = birthYear; year < currentYear; ++year) {
totalDays += isLeapYear(year) ? 366 : 365;
}
// Вычитаем дни, прошедшие с начала года рождения до дня рождения
for (int month = 1; month < birthMonth; ++month) {
totalDays -= daysInMonth(month, birthYear);
}
totalDays -= birthDay - 1;
// Добавляем дни, прошедшие с начала текущего года до текущей даты
for (int month = 1; month < currentMonth; ++month) {
totalDays += daysInMonth(month, currentYear);
}
totalDays += currentDay - 1;
return totalDays;
}
int main() {
// Дата рождения: 20 января 1997 года
int birthDay = 20;
int birthMonth = 1; // январь
int birthYear = 1997;
// Текущая дата: 6 февраля 2025 года
int currentDay = 6;
int currentMonth = 2; // февраль
int currentYear = 2025;
// Вычисляем количество дней между датами
int ageInDays = calculateDaysBetweenDates(birthDay, birthMonth, birthYear,
currentDay, currentMonth, currentYear);
std::cout << "Ваш возраст в днях (с " << birthDay << "." << birthMonth << "." << birthYear
<< " по " << currentDay << "." << currentMonth << "." << currentYear
<< ") составляет: " << ageInDays << " дней." << std::endl;
return 0;
}
Нужно написать функцию которая будет вычислять количество дней, лет, месяцев
яйца