Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- /* Вывод возраста, совершеннолетия + пенсион. возраст
- Лаб. раб. №5, на 17.10.2019
- by Никита, */
- const char *age(unsigned int);
- int input();
- int main(void){
- unsigned int n=0;
- n=input();
- printf("Ваш возраст %d %s\n", n, age(n));
- if (n>=18)
- printf("Вы совершеннолетий человек!\n");
- else
- printf("До совершеннолетия Вам осталось %d %s\n",18-n,age(18-n) );
- if (n>=60)
- printf("Вы на пенсии\n");
- else
- printf("Вам до пенсии %d %s\n", 60-n, age(60-n));
- }
- //Проверка ввода и сам ввод данных
- int input(){
- unsigned char prov=0; //Как буфер
- unsigned int d=0,u=0,l=0;
- unsigned int sborka =0;//Временная переменная, для "сборки" числа из цифр.
- do {
- u=0; //подсчёт количества элементов в веденной переменной
- d=0; //Количество цифр
- l=0; //Показатель
- printf("Введите возраст = ");
- do{
- prov = getchar();
- d=d+1;
- if (prov>='0' && prov<='9') //Проверка, что это цифра [0-9]
- {
- u=u+1; (u==1) ? (sborka=prov-48) : (sborka=sborka*10+(prov-48)); // 48 = '0'
- }
- }while (prov != '\n');
- if ((d-1)==u && sborka <= 100 && sborka > 0) //Если коли-во символов без enter равно колву цифр + проверка на возраст
- l=1; //Если l=1, значит введено число
- else {
- printf("Значение введено некорректно! Пожалуйста, повторите попытку и введите заново возрсаст!\n");
- sborka=0;//Собираем число заново
- }
- prov=0;
- } while(l!=1); //До тех пор, пока не будет введено число
- return sborka;
- }
- //Добавляем ЛЕТ, ГОД, ГОДА
- const char *age(unsigned int n){
- char * const ageMass[]={"лет", "год", "года"};
- if (n>=11 && n <=20){ //Если человеку [11-20], то ЛЕТ
- return ageMass[0]; //ЛЕТ
- } else{
- switch (n%10){
- case 1: return ageMass[1]; break; //ГОД
- case 2: case 3: case 4: return ageMass[2]; break;//ГОДА
- default: return ageMass[0]; break;//ЛЕТ для 0,5,6,7,8,9
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement