Определить возраст человека на сегодняшний день (по году и месяцу рождения) - 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;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: time.h и stdio.h
  2. Определяется функция age, которая принимает два аргумента типа int - год и месяц рождения.
  3. Внутри функции объявляются следующие переменные: now_year, now_month, res, t_now, tm.
  4. Переменная now инициализируется вызовом функции time(NULL). Это позволяет получить текущее системное время.
  5. Вызывается функция localtime, которая преобразует системное время в структуру tm, содержащую поля год, месяц, день и т.д.
  6. Инициализируются переменные now_year и now_month, используя поля структуры tm.
  7. Переменная res инициализируется как разница между текущим годом (now_year) и годом рождения (birth_year), уменьшенным на 1.
  8. Если текущий месяц (now_month) больше или равен месяцу рождения (birth_month), то к переменной res добавляется 1.
  9. Возвращается значение переменной res.
  10. В функции main считываются два аргумента с командной строки - месяц и год.
  11. Вызывается функция age с переданными аргументами.
  12. Результат выводится на экран с помощью функции printf.
  13. Функция main возвращает 0, что означает успешное завершение работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы