Вопрос задан 26.07.2023 в 13:56. Предмет Информатика. Спрашивает Чулдум Айчек.

Даны дата рождения человека и сегодняшняя дата. Требуется определить, исполнилось ли человеку 16

лет. Формат входных данных В первой строке входного файла записана дата рождения человека, во второй — сегодняшняя дата. Каждая дата представляет собой три целых числа: D, M и Y — день, месяц и год соответственно. Гарантируется, что тройки чисел задают корректную дату календаря, а сами даты лежат между 1 января 1900 года и 31 декабря 2050 года. написать на c++
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Курышева Дарья.

Алгоритм решения

Для начала давай посмотрим на года.

1. Если разница между годом рождения и текущим годом больше 16, мы однозначно можем сказать, что человеку уже есть 16.

2. Если разница между годом рождения и текущим годом меньше 16, мы однозначно можем сказать, что человеку ещё нет 16.

Если разница между годом рождения и текущим годом равна 16, мы можем сказать, что у человека день рождения в этом году. Давай глянем на месяц.

1. Если текущий месяц больше месяца рождения, человеку уже есть 16.

2. Если текущий месяц меньше месяца рождения, человеку ещё нет 16.

Если у человека день рождения в этом месяце, давай точно так же глянем на дни.

В итоге мы уже точно знаем, когда у человека день рождения.


Код решения

#include <bits/stdc++.h>

using namespace std;


int main() {

   int d1, m1, y1, d2, m2, y2;

   cin >> d1 >> m1 >> y1 >> d2 >> m2 >> y2;

   if (y2 - y1 > 16) {

       cout << "YES" << endl;

       return 0;

   } else if (y2 - y1 < 16) {

       cout << "NO" << endl;

       return 0;

   }

   if (m2 > m1) {

       cout << "YES" << endl;

       return 0;

   } else if (m2 < m1) {

       cout << "NO" << endl;

       return 0;

   }

   if (d2 < d1) {

       cout << "NO" << endl;

       return 0;

   }

   cout << "YES" << endl;

   return 0;

}


Файл решения прикреплён.




0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи на C++, вы можете использовать следующий код:

cpp
#include <iostream> using namespace std; struct Date { int day; int month; int year; }; bool isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } bool isValidDate(const Date& date) { if (date.year < 1900 || date.year > 2050 || date.month < 1 || date.month > 12 || date.day < 1) return false; static const int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int days = daysInMonth[date.month]; if (date.month == 2 && isLeapYear(date.year)) days++; return date.day <= days; } bool hasPassed16Years(const Date& birthdate, const Date& currentDate) { if (currentDate.year - birthdate.year > 16) return true; if (currentDate.year - birthdate.year < 16) return false; if (currentDate.month > birthdate.month) return true; if (currentDate.month < birthdate.month) return false; return currentDate.day >= birthdate.day; } int main() { Date birthdate, currentDate; // Ввод даты рождения cin >> birthdate.day >> birthdate.month >> birthdate.year; // Ввод сегодняшней даты cin >> currentDate.day >> currentDate.month >> currentDate.year; if (!isValidDate(birthdate) || !isValidDate(currentDate)) { cout << "Invalid input date." << endl; return 1; } if (hasPassed16Years(birthdate, currentDate)) { cout << "Person has turned 16 years old." << endl; } else { cout << "Person has not turned 16 years old yet." << endl; } return 0; }

Этот код определит, исполнилось ли человеку 16 лет на сегодняшнюю дату, и выдаст соответствующее сообщение.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос