Известны год и номер месяца рождения человека, а также год и номер месяца сегодняшнего дня (январь — 1 и т. д.). Определить возраст человека (число полных лет). В случае совпадения указанных номеров месяцев считать, что полный год.
Принимаем на вход номер года и номер месяца рождения.
Код:
using System;namespace HowOldAreYou{ class Program { static void Main(string[] args) { int month, year; Console.WriteLine("Enter your birthday year number and month number"); Console.Write("Year: "); if (!int.TryParse(Console.ReadLine()!, out year)) return; Console.Write("Month: "); if (!int.TryParse(Console.ReadLine()!, out month) || month > 12 || month < 1) return; var today = DateTime.Now; var birthday = new DateTime(year, month, today.Day); var age = (ZeroDate + (today - birthday)).Year - 1; age = age == 0 ? 1 : age; Console.WriteLine($"Your age is {age}."); } private static DateTime ZeroDate => new DateTime(1, 1, 1); }}
Пусть x - возраст человечка.
Вычитаем сегодняшний год из года, когда родился человечек:
x = сегодняшний год - год рождения человечка
Дальше сравниваем месяцы, если месяц рождения человечка меньше,чем сегодняшний месяц или равен ему, то x остается прежним:
x
Если месяц рождения человечка больше сегодняшнего месяца, то из x вычитаем 1:
x = x - 1
Например:
Сегодняшний месяц: 9
Сегодняшний год: 2020
Год рождения человечка: 2002
Месяц рождения человечка: 8
x = 2020 - 2002
x = 18
Месяца рождения человечка меньше сегодняшнего, x остается прежним
x = 18
ответ: 18 лет
Язык не указан, привел пример на C# .NET Core 3.1
Принимаем на вход номер года и номер месяца рождения.
Код:
using System;namespace HowOldAreYou{ class Program { static void Main(string[] args) { int month, year; Console.WriteLine("Enter your birthday year number and month number"); Console.Write("Year: "); if (!int.TryParse(Console.ReadLine()!, out year)) return; Console.Write("Month: "); if (!int.TryParse(Console.ReadLine()!, out month) || month > 12 || month < 1) return; var today = DateTime.Now; var birthday = new DateTime(year, month, today.Day); var age = (ZeroDate + (today - birthday)).Year - 1; age = age == 0 ? 1 : age; Console.WriteLine($"Your age is {age}."); } private static DateTime ZeroDate => new DateTime(1, 1, 1); }}