Advertisement
Guest User

Untitled

a guest
Nov 11th, 2018
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. #include <cstdio>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.     short num;      // Создаю переменную для хранения введенного числа, переменную для хранения числа введенных цифр
  7.     unsigned short num0,num1,num2,num3,num4,num5,num6,num7,num8,num9,counter;   // и переменные для хранения количества введеных цифр одного значения
  8.     num0=num1=num2=num3=num4=num5=num6=num7=num8=num9=counter=0;
  9.    
  10.     puts ("Введите число, подлежащее сортировке: ");
  11.     while (num!='\n')
  12.     {
  13.         scanf ("%c", &num); // Получаю числа по очереди
  14.        
  15.         switch (num)        // Сортирую числа
  16.         {
  17.             case '0': {++num0; break;}  case '1': {++num1; break;}
  18.             case '2': {++num2; break;}  case '3': {++num3; break;}
  19.             case '4': {++num4; break;}  case '5': {++num5; break;}
  20.             case '6': {++num6; break;}  case '7': {++num7; break;}
  21.             case '8': {++num8; break;}  case '9': {++num9; break;}
  22.             case '\n': break;
  23.             default: {puts("\n\nВводи числа, выблядок!"); break;}
  24.         }
  25.        
  26.         ++counter;
  27.     }
  28.    
  29.     long long result = 0, degree = 1;   // Создаю переменные для хранения итогового числа и рассчета разрядов
  30.     bool doCycle = 1;                   // Создаю переменную для прерывания цикла
  31.    
  32.     for (; counter != 2; --counter) {degree *= 10;} // Высчитываю максимальный разряд числа
  33.  
  34.     while (doCycle)
  35.     {
  36.         while (num9) {result += (9*degree); degree/=10; --num9;}
  37.         while (num8) {result += (8*degree); degree/=10; --num8;}
  38.         while (num7) {result += (7*degree); degree/=10; --num7;}
  39.         while (num6) {result += (6*degree); degree/=10; --num6;}
  40.         while (num5) {result += (5*degree); degree/=10; --num5;}
  41.         while (num4) {result += (4*degree); degree/=10; --num4;}
  42.         while (num3) {result += (3*degree); degree/=10; --num3;}
  43.         while (num2) {result += (2*degree); degree/=10; --num2;}
  44.         while (num1) {result += (1*degree); degree/=10; --num1;}
  45.         while (num0) {result += (0*degree); degree/=10; --num0;}
  46.         doCycle = 0;
  47.     }
  48.    
  49.     printf ("\nРезультат сортировки равен: %lld\n\n", result);
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement