#include <stdio.h>
#include <stdlib.h>
// Прототипы функций
static int enter();
static void print_age(const int);
static void print_maturity_status(const int);
static void print_retirement_status(const int);
int main() {
int number = enter();
print_age(number);
print_maturity_status(number);
print_retirement_status(number);
}
//-----------------------------------------------------------------------------
// Ввод числа
static int enter() {
int n;
printf("%s: ", "Введите число от 1 до 100");
if ((n < 1) || (n > 100)) {
fprintf(stderr
, "%s\n", "Ошибка! Выход за границы диапазона."); }
return n;
}
//-----------------------------------------------------------------------------
// Определение верной грамматической формы для числительного
static const char *grammatic_form(const int n) {
int last_digit = n % 10;
return
( !last_digit
|| (last_digit >= 5)
|| ((n > 4) && (n < 15))) ? "лет" :
(last_digit == 1) ? "год" :
"года";
}
//-----------------------------------------------------------------------------
// Абсолютное значения целого числа (своя версия, чтобы не подключать либу)
static inline int local_abs(const int n) {
return (n >= 0) ? n : -n;
}
//-----------------------------------------------------------------------------
// Возраст
static void print_age(const int n) {
printf("Ваш возраст %i %s\n", n
, grammatic_form
(n
)); }
//-----------------------------------------------------------------------------
// Совершеннолетие
static void print_maturity_status(const int n) {
const int MATURITY_AGE = 18;
int difference = local_abs(MATURITY_AGE - n);
((n >= MATURITY_AGE) ? "Вы совершеннолетний" : "Вам до совершеннолетия"),
difference,
grammatic_form(difference)
);
}
//-----------------------------------------------------------------------------
// Пенсия
static void print_retirement_status(const int n) {
const int RETIREMENT_AGE = 60;
int difference = local_abs(n - RETIREMENT_AGE);
((n >= RETIREMENT_AGE) ? "Вы на пенсии" : "Вам до пенсии"),
difference,
grammatic_form(difference)
);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vINCf0YDQvtGC0L7RgtC40L/RiyDRhNGD0L3QutGG0LjQuQpzdGF0aWMgaW50IGVudGVyKCk7CnN0YXRpYyB2b2lkIHByaW50X2FnZShjb25zdCBpbnQpOwpzdGF0aWMgdm9pZCBwcmludF9tYXR1cml0eV9zdGF0dXMoY29uc3QgaW50KTsKc3RhdGljIHZvaWQgcHJpbnRfcmV0aXJlbWVudF9zdGF0dXMoY29uc3QgaW50KTsKCmludCBtYWluKCkgewogICAgaW50IG51bWJlciA9IGVudGVyKCk7CiAgICBwdXRzKCIiKTsKICAgIHByaW50X2FnZShudW1iZXIpOwogICAgcHJpbnRfbWF0dXJpdHlfc3RhdHVzKG51bWJlcik7CiAgICBwcmludF9yZXRpcmVtZW50X3N0YXR1cyhudW1iZXIpOwp9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyDQktCy0L7QtCDRh9C40YHQu9CwCnN0YXRpYyBpbnQgZW50ZXIoKSB7CiAgICBpbnQgbjsKICAgIHByaW50ZigiJXM6ICIsICLQktCy0LXQtNC40YLQtSDRh9C40YHQu9C+INC+0YIgMSDQtNC+IDEwMCIpOwogICAgc2NhbmYoIiVpIiwgJm4pOwoKICAgIGlmICgobiA8IDEpIHx8IChuID4gMTAwKSkgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsICLQntGI0LjQsdC60LAhINCS0YvRhdC+0LQg0LfQsCDQs9GA0LDQvdC40YbRiyDQtNC40LDQv9Cw0LfQvtC90LAuIik7CiAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwogICAgfQoKICAgIHJldHVybiBuOwp9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyDQntC/0YDQtdC00LXQu9C10L3QuNC1INCy0LXRgNC90L7QuSDQs9GA0LDQvNC80LDRgtC40YfQtdGB0LrQvtC5INGE0L7RgNC80Ysg0LTQu9GPINGH0LjRgdC70LjRgtC10LvRjNC90L7Qs9C+CnN0YXRpYyBjb25zdCBjaGFyICpncmFtbWF0aWNfZm9ybShjb25zdCBpbnQgbikgewogICAgaW50IGxhc3RfZGlnaXQgPSBuICUgMTA7CiAgICByZXR1cm4KICAgICAgICAoICAgIWxhc3RfZGlnaXQKICAgICAgICB8fCAgKGxhc3RfZGlnaXQgPj0gNSkKICAgICAgICB8fCAgKChuID4gNCkgJiYgKG4gPCAxNSkpKSAgPyAi0LvQtdGCIiA6CiAgICAgICAgKGxhc3RfZGlnaXQgPT0gMSkgICAgICAgICAgID8gItCz0L7QtCIgOgogICAgICAgICLQs9C+0LTQsCI7Cn0KCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi8vINCQ0LHRgdC+0LvRjtGC0L3QvtC1INC30L3QsNGH0LXQvdC40Y8g0YbQtdC70L7Qs9C+INGH0LjRgdC70LAgKNGB0LLQvtGPINCy0LXRgNGB0LjRjywg0YfRgtC+0LHRiyDQvdC1INC/0L7QtNC60LvRjtGH0LDRgtGMINC70LjQsdGDKQpzdGF0aWMgaW5saW5lIGludCBsb2NhbF9hYnMoY29uc3QgaW50IG4pIHsKICAgIHJldHVybiAobiA+PSAwKSA/IG4gOiAtbjsKfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8g0JLQvtC30YDQsNGB0YIKc3RhdGljIHZvaWQgcHJpbnRfYWdlKGNvbnN0IGludCBuKSB7CiAgICBwcmludGYoItCS0LDRiCDQstC+0LfRgNCw0YHRgiAlaSAlc1xuIiwgbiwgZ3JhbW1hdGljX2Zvcm0obikpOwp9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyDQodC+0LLQtdGA0YjQtdC90L3QvtC70LXRgtC40LUKc3RhdGljIHZvaWQgcHJpbnRfbWF0dXJpdHlfc3RhdHVzKGNvbnN0IGludCBuKSB7CiAgICBjb25zdCBpbnQgTUFUVVJJVFlfQUdFID0gMTg7CiAgICBpbnQgZGlmZmVyZW5jZSA9IGxvY2FsX2FicyhNQVRVUklUWV9BR0UgLSBuKTsKICAgIHByaW50ZigiJXMgJWkgJXNcbiIsCiAgICAgICAgKChuID49IE1BVFVSSVRZX0FHRSkgPyAi0JLRiyDRgdC+0LLQtdGA0YjQtdC90L3QvtC70LXRgtC90LjQuSIgOiAi0JLQsNC8INC00L4g0YHQvtCy0LXRgNGI0LXQvdC90L7Qu9C10YLQuNGPIiksCiAgICAgICAgZGlmZmVyZW5jZSwKICAgICAgICBncmFtbWF0aWNfZm9ybShkaWZmZXJlbmNlKQogICAgKTsKfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8g0J/QtdC90YHQuNGPCnN0YXRpYyB2b2lkIHByaW50X3JldGlyZW1lbnRfc3RhdHVzKGNvbnN0IGludCBuKSB7CiAgICBjb25zdCBpbnQgUkVUSVJFTUVOVF9BR0UgPSA2MDsKICAgIGludCBkaWZmZXJlbmNlID0gbG9jYWxfYWJzKG4gLSBSRVRJUkVNRU5UX0FHRSk7CiAgICBwcmludGYoIiVzICVpICVzXG4iLAogICAgICAgICgobiA+PSBSRVRJUkVNRU5UX0FHRSkgPyAi0JLRiyDQvdCwINC/0LXQvdGB0LjQuCIgOiAi0JLQsNC8INC00L4g0L/QtdC90YHQuNC4IiksCiAgICAgICAgZGlmZmVyZW5jZSwKICAgICAgICBncmFtbWF0aWNfZm9ybShkaWZmZXJlbmNlKQogICAgKTsKfQo=