Задача:
Разработайте программу, которая запрашивает у пользователя дату рождения и вычисляет, сколько лет ему исполнилось. JavaScript.
План:
- Алгоритм решения
- Код программы
- Примеры входных данных и ожидаемых результатов
- Объяснение кода программы
- Блок-схема
Алгоритм решения:
-
Импорт модуля
readline
для взаимодействия с пользователем через консоль. -
Создание интерфейса
readline
для ввода/вывода. -
Определение функции
calculateAge(birthdate)
:- Получение текущей даты
- Преобразование введенной даты рождения в объект Date
- Вычисление разницы в годах между текущей датой и датой рождения
- Проверка, наступил ли день рождения в текущем году:
- Если текущий месяц меньше месяца рождения или
- Если месяцы совпадают, но текущий день меньше дня рождения
- Уменьшение возраста на 1, если день рождения в этом году еще не наступил
- Возврат вычисленного возраста
-
Запрос даты рождения у пользователя через
rl.question()
. -
Вызов функции
calculateAge()
с введенной датой рождения. -
Вывод результата (возраста) в консоль.
-
Закрытие интерфейса
readline
.
Код программы на языке JavaScript:
Код JavaScript
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function calculateAge(birthdate) {
const today = new Date();
const birth = new Date(birthdate);
let age = today.getFullYear() - birth.getFullYear();
const monthDiff = today.getMonth() - birth.getMonth();
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birth.getDate())) {
age--;
}
return age;
}
rl.question("Enter your birthdate (YYYY-MM-DD): ", (birthdate) => {
const age = calculateAge(birthdate);
console.log(`You are ${age} years old.`);
rl.close();
});
Примеры входных данных и ожидаемых результатов:
Input: 1990-05-15
Output: You are 33 years old.
Input: 2000-12-31
Output: You are 22 years old.
Input: 1985-07-20
Output: You are 37 years old.
Input: 2010-03-01
Output: You are 13 years old.
Input: 1975-11-30
Output: You are 47 years old.
Объяснение кода программы:
-
Импорт модуля readline:
Импортируется встроенный модуль Node.jsconst readline = require('readline');
readline
для работы с вводом/выводом в консоли. -
Создание интерфейса readline:
Создается интерфейс readline для чтения ввода пользователя и вывода в консоль.const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
-
Определение функции calculateAge:
Функция вычисляет возраст на основе даты рождения, учитывая текущую дату и корректируя возраст, если день рождения в этом году еще не наступил.function calculateAge(birthdate) { const today = new Date(); const birth = new Date(birthdate); let age = today.getFullYear() - birth.getFullYear(); const monthDiff = today.getMonth() - birth.getMonth(); if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birth.getDate())) { age--; } return age; }
-
Запрос даты рождения у пользователя:
Запрашивается дата рождения у пользователя, вычисляется возраст с помощью функции calculateAge, выводится результат и закрывается интерфейс readline.rl.question("Enter your birthdate (YYYY-MM-DD): ", (birthdate) => { const age = calculateAge(birthdate); console.log(`You are ${age} years old.`); rl.close(); });