Advertisement
Usow_Maxim

Lab_5.9

Dec 24th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.19 KB | None | 0 0
  1. #include <stdio.h> //printf(); scanf();
  2. #include <cstdlib> //atoi();
  3. #include <conio.h> //_getch();
  4. #include <windows.h> //SetConsoleCP()
  5. #include <ctime> //stime(time(0));
  6.  
  7. int Write_int()
  8. {
  9.     char str[10];
  10.     int value = 0;
  11.     while(true)
  12.     {
  13.         scanf("%s", str);
  14.         // ?: - Это тернарный оператор Одним из существенных отличий обычного оператора if … else это то,
  15.         //что результат операции ?: можно сохранять в переменную.
  16.         value = abs(atoi(str))? abs(atoi(str)) : 0;
  17.         if (value > 0)
  18.             break;
  19.         else
  20.             printf("Введите значение |n| > 0: ");
  21.     }
  22.     return value;
  23. }
  24.  
  25. char* Input_Str(int &Size)
  26. {
  27.     printf("Ввод строки: ");
  28.     char* cloneStr = NULL;
  29.     char* str = NULL;
  30.  
  31.     Size = 0;
  32.  
  33.     while(true)
  34.     {
  35.         int symbol = _getch();
  36.  
  37.         cloneStr = new char[Size + 1];
  38.         for (int i = 0; i < Size; i++)
  39.             if (str[i] != '\0')
  40.                 cloneStr[i] = str[i];
  41.         str = new char[Size + 1];
  42.         for (int i = 0; i < Size; i++)
  43.             str[i] = cloneStr[i];
  44.         delete[] cloneStr;
  45.  
  46.         if ((symbol >= 'a' && symbol <= 'z') || (symbol >= 'A' && symbol <= 'Z') || (symbol >= '0' && symbol <= '9'))
  47.         {
  48.             str[Size] = symbol;
  49.             Size++;
  50.         }
  51.  
  52.         if(symbol == 32)
  53.         {
  54.             str[Size] = '_';
  55.             Size++;
  56.         }
  57.  
  58.         if (symbol == 8 && Size > 0)
  59.         {
  60.             str[Size] = ' ';
  61.             Size--;
  62.         }
  63.  
  64.         if (symbol == 13)
  65.         {
  66.             str[Size] = '\0';
  67.             break;
  68.         }
  69.     }
  70.     printf("%s\n\n", str);
  71.     return str;
  72. }
  73.  
  74. void Obr_Str(char* str, int Size){
  75.     int ints = 0;
  76.     for(int i = 0; i < Size; i++)
  77.         if(str[i] >= '0' && str[i] <= '9')
  78.             ints++;
  79.     printf("[Обработка]:\nДлина строки - %d\nКол. цифр в строке - %d\n\n", Size, ints);
  80. }
  81.  
  82. void Output_Str(char* str){
  83.     printf("[Вывод строки]:\n%s\n\n", str);
  84. }
  85.  
  86. int main()
  87. {
  88.     SetConsoleCP(1251);
  89.     SetConsoleOutputCP(1251);
  90.  
  91.     char* str = new char[1];
  92.     str[0] = '\0';
  93.     int Size = 0;
  94.  
  95.     bool RUN = true;
  96.     while(RUN){
  97.         printf("[Меню]:\n");
  98.         printf("*********************\n");
  99.         printf("*1.Ввод строки      *\n");
  100.         printf("*2.Обработка строки *\n");
  101.         printf("*3.Вывод строки     *\n");
  102.         printf("*4.Выход            *\n");
  103.         printf("*********************\nВыбор: ");
  104.         switch(Write_int()){
  105.             case 1:
  106.             {
  107.                 str = Input_Str(Size);
  108.                 break;
  109.             }
  110.             case 2:
  111.             {
  112.                 Obr_Str(str, Size);
  113.                 break;
  114.             }
  115.             case 3:
  116.                 Output_Str(str);
  117.                 break;
  118.             case 4:
  119.                 RUN = false;
  120.                 break;
  121.             default:
  122.                 break;
  123.         }
  124.     }
  125.     delete[] str;
  126.     return 0;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement