Определить возраст человека на сегодняшний день (по году и месяцу рождения) - C (СИ)
Формулировка задачи:
ПОМОГИТЕ Создать программу на Си которая определяет возраст человека на сегодняшний день. Известны только год и месяц рождения( например 1990,1), если номер месяцев совпадает считать что прошел год. Ввод с клавиатуры запрещен!
Решение задачи: «Определить возраст человека на сегодняшний день (по году и месяцу рождения)»
textual
Листинг программы
// Есть замечательный инклюдник time.h, где есть функции для работы с датой #include <time.h> #include <stdio.h> int age(int birth_year, int birth_month) { // Желательно в интернете ознакомиться с описанием функций time и localtime int now_year, now_month; time_t now = time(NULL); // Так выбирается текущее системное время. struct tm *t_now; // В этой структуре все разбито на поля год, день, месяц и т.д int res; tm = localtime(&now); // Так заполняется эта структура // Некоторые поля структуры tm иногда содержат данные не совсем в привычном виде now_year = t_now->tm_year + 1900; now_month = t_now->tm_mon + 1; // Прошло полных лет, скобки можно не ставить это просто для восприятия res = (now_year - 1) - birth_year; // Нынешний год неполный, сравниваем месяц if(now_month >= birth_month) res ++; return res; } // С клавиатуры нельзя - возьмем из командной строки // Все проверки данных опускаем // Пример: age 4 1981 int main(int argc, char *argv[]) { int year, month; sscanf(argv[1], "%d", &month); sscanf(argv[2], "%d", &year); printf("age is %d years\n", age(year, month)); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: time.h и stdio.h
- Определяется функция age, которая принимает два аргумента типа int - год и месяц рождения.
- Внутри функции объявляются следующие переменные: now_year, now_month, res, t_now, tm.
- Переменная now инициализируется вызовом функции time(NULL). Это позволяет получить текущее системное время.
- Вызывается функция localtime, которая преобразует системное время в структуру tm, содержащую поля год, месяц, день и т.д.
- Инициализируются переменные now_year и now_month, используя поля структуры tm.
- Переменная res инициализируется как разница между текущим годом (now_year) и годом рождения (birth_year), уменьшенным на 1.
- Если текущий месяц (now_month) больше или равен месяцу рождения (birth_month), то к переменной res добавляется 1.
- Возвращается значение переменной res.
- В функции main считываются два аргумента с командной строки - месяц и год.
- Вызывается функция age с переданными аргументами.
- Результат выводится на экран с помощью функции printf.
- Функция main возвращает 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д