Advertisement
Qellex

6.1 - 18 V

Apr 27th, 2021
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.61 KB | None | 0 0
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6.  
  7. // преобразование символа в число
  8. int num(char* str, int i) {
  9.     // если символ нуль, то он становится числом нуль и т.д.
  10.     switch (str[i]) {
  11.     case '0':
  12.         return 0;
  13.         break;
  14.     case '1':
  15.         return 1;
  16.         break;
  17.     case '2':
  18.         return 2;
  19.         break;
  20.     case '3':
  21.         return 3;
  22.         break;
  23.     case '4':
  24.         return 4;
  25.         break;
  26.     case '5':
  27.         return 5;
  28.         break;
  29.     case '6':
  30.         return 6;
  31.         break;
  32.     case '7':
  33.         return 7;
  34.         break;
  35.     case '8':
  36.         return 8;
  37.         break;
  38.     case '9':
  39.         return 9;
  40.         break;
  41.     default:
  42.         return -1;
  43.         break;
  44.     }
  45. }
  46.  
  47.  
  48. void main() {
  49.  
  50.     SetConsoleCP(1251);     SetConsoleOutputCP(1251);
  51.  
  52.     char str[81]; // сама строка ввода
  53.    
  54.     int zifa = 0, k, ss = 2;  // результат, переменная для сохр цифры, сс
  55.  
  56.     printf("Введите число с СС от 2 до 10: ");
  57.     fgets(str, 81, stdin);
  58.  
  59.     int n = strlen(str) - 2; // длина для перевода в 10 сс
  60.    
  61.     // Находим СС
  62.     for (int i = 0; str[i] != '\0'; i++) {
  63.         if (ss < num(str, i))
  64.             ss = num(str, i);
  65.     }
  66.  
  67.     ss++;
  68.    
  69.  
  70.     // Переводим в десятичную СС
  71.     for (int i = 0; str[i] != '\0'; i++) {
  72.         // какая цифра сейчас
  73.         k = num(str, i);
  74.         // проверка на правильность ввода
  75.         if (k != -1) {
  76.             zifa += k * pow(ss, n);
  77.             n--;
  78.         }
  79.         else {
  80.             printf("Неверный ввод");
  81.         }
  82.     }
  83.  
  84.     if (zifa > -1)
  85.         printf("Число в 10 СС равно = %d", zifa);
  86.  
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement