Advertisement
InnaSibirova

5(1) torch

Feb 13th, 2022
1,142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main(void)
  5. {
  6.     int num = 0;    // инициализируем переменную num
  7.    
  8.     int dec = 1;    // инициализируем вспомогательную переменную dec
  9.     char str[1000] = ""; //инициализируем строку str
  10.     scanf("%s", str); // считываем число пользователя
  11.     for(int i = strlen(str) - 1; i >= 0; i--) { // выполянем проверку на корректность данных
  12.         if(str[i] < 48 || str[i] > 57) {
  13.             printf("Wrong data!");
  14.             return 0;
  15.         }
  16.         else {
  17.             num += (str[i] - 48) * dec;
  18.             dec *= 10;
  19.         }
  20.     }
  21.    
  22.     printf (" Input num: %d\n ", num);   // печатаем на экран введенное число
  23.  
  24.     printf ("Num without even numbers: ");    // выводим сообщение, что дальше будет выведено число без четных цифр
  25.  
  26.     int new_num = 0; /* новое, перевернутое число */
  27.     short digit = 0; /* цифра какого-то разряда введенного числа */
  28.     while (num / 10 != 0 || num % 10 != 0) { /* пока есть цифры в числе */
  29.         digit = num % 10;       /* достаем следующую цифру из введеного числа (с права на лево) */
  30.         if (digit % 2 != 0) {   /* если цифра нечетная, то добавляем его к итоговому числу */
  31.             new_num = new_num * 10 + digit; /* само добавление */
  32.         }
  33.         num /= 10; /* берем следующую цифру */
  34.     }
  35.  
  36.     /* переворачиваем число */
  37.     int final = 0; /* перевернутое число - ответ */
  38.     while (new_num / 10 != 0 || new_num % 10 != 0) { /* пока есть цифры в числе */
  39.         final = final * 10 + new_num % 10; /* записываем цифры в новое число так, что бы в результате final был перевернутой версией числа new_num */
  40.         new_num /= 10; /* переходим к следующей цифре */
  41.     }
  42.     printf("%d\n", final);
  43.     return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement