Advertisement
Guest User

Nikita

a guest
Oct 16th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.62 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. /* Вывод возраста, совершеннолетия + пенсион. возраст
  4. Лаб. раб. №5, на 17.10.2019
  5. by Никита,  */
  6.  
  7. const char *age(unsigned int);
  8. int input();
  9.  
  10.  
  11. int main(void){
  12.     unsigned int n=0;
  13.     n=input();
  14.  
  15.     printf("Ваш возраст %d %s\n", n, age(n));
  16.  
  17.   if (n>=18)
  18.     printf("Вы совершеннолетий человек!\n");
  19.   else
  20.     printf("До совершеннолетия Вам осталось %d %s\n",18-n,age(18-n) );
  21.  
  22.  
  23.   if (n>=60)
  24.     printf("Вы на пенсии\n");
  25.   else
  26.     printf("Вам до пенсии %d %s\n", 60-n, age(60-n));
  27.  
  28. }
  29.  
  30.  
  31. //Проверка ввода и сам ввод данных
  32. int input(){
  33.     unsigned char prov=0; //Как буфер
  34.     unsigned int d=0,u=0,l=0;
  35.     unsigned int sborka =0;//Временная переменная, для "сборки" числа из цифр.
  36.  
  37.     do {
  38.         u=0; //подсчёт количества элементов в веденной переменной
  39.         d=0; //Количество цифр
  40.         l=0; //Показатель
  41.         printf("Введите возраст = ");
  42.  
  43.         do{
  44.             prov = getchar();
  45.             d=d+1;
  46.  
  47.             if (prov>='0' && prov<='9') //Проверка, что это цифра [0-9]
  48.             {
  49.                 u=u+1; (u==1) ? (sborka=prov-48) : (sborka=sborka*10+(prov-48)); // 48 = '0'
  50.             }
  51.         }while (prov != '\n');
  52.  
  53.         if ((d-1)==u && sborka <= 100 && sborka > 0) //Если коли-во символов без enter равно колву цифр + проверка на возраст
  54.              l=1; //Если l=1, значит введено число
  55.         else {
  56.                 printf("Значение введено некорректно! Пожалуйста, повторите попытку и введите заново возрсаст!\n");
  57.                 sborka=0;//Собираем число заново
  58.              }
  59.  
  60.       prov=0;
  61.  
  62.     } while(l!=1); //До тех пор, пока не будет введено число
  63.            
  64.     return sborka;
  65. }
  66.  
  67.  
  68. //Добавляем ЛЕТ, ГОД, ГОДА
  69. const char *age(unsigned int n){
  70.      char * const ageMass[]={"лет", "год", "года"};
  71.    if (n>=11 && n <=20){ //Если человеку [11-20], то ЛЕТ
  72.     return ageMass[0]; //ЛЕТ
  73.    } else{
  74.     switch (n%10){
  75.       case 1: return ageMass[1]; break; //ГОД
  76.       case 2: case 3: case 4: return ageMass[2]; break;//ГОДА
  77.       default: return ageMass[0]; break;//ЛЕТ для 0,5,6,7,8,9
  78.     }
  79.    
  80.    }
  81.  
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement