Advertisement
Usow_Maxim

Lab_5.4

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