Advertisement
Usow_Maxim

Lab_5

Oct 27th, 2017
743
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.58 KB | None | 0 0
  1. #include <stdio.h> //printf(); scanf();
  2. #include <cstdlib> //atoi();
  3. #include <conio.h> //_getch();
  4. #include <windows.h> //HANDLE COORD SetConsoleCursorPosition();
  5. #include <ctime> //stime(time(0));
  6.  
  7. int Write_int(){
  8.     char arr[10];
  9.     int value;
  10.     while(true){
  11.         scanf("%s", arr);
  12.         value = (atoi(arr))? atoi(arr) : 0;
  13.         if (value > 0)
  14.             break;
  15.         else
  16.             printf("Введите значение n > 0: ");
  17.     }
  18.     return value;
  19. }
  20.  
  21. void Input_Str(char* &str, int &Size){
  22.     system("cls");
  23.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  24.     COORD pos;
  25.     char* cloneStr;
  26.     pos.Y = 2;
  27.     pos.X = 0;
  28.     printf("[Ввод строки]\nСтрока:\n");
  29.  
  30.     while(true){
  31.         int symbol = _getch();
  32.  
  33.         //Расширение
  34.         cloneStr = new char[pos.X + 1];
  35.         for (int i = 0; i < pos.X; i++)
  36.             if (str[i] != '\0')
  37.                 cloneStr[i] = str[i];
  38.         str = new char[pos.X + 1];
  39.         for (int i = 0; i < pos.X; i++)
  40.             str[i] = cloneStr[i];
  41.  
  42.         if ((symbol >= 97 && symbol <= 122) || (symbol == 32)){
  43.             str[pos.X] = symbol;
  44.             printf("%c", str[pos.X]);
  45.             pos.X++;
  46.         }
  47.  
  48.         if (symbol == 8 && pos.X > 0){
  49.             str[pos.X] = ' ';
  50.             printf("%c", ' ');
  51.             pos.X--;
  52.         }
  53.  
  54.         SetConsoleCursorPosition(hConsole, pos);
  55.         if (symbol == 13)
  56.             break;
  57.     }
  58.     delete[] cloneStr;
  59.     Size = pos.X;
  60.     printf("\nНажмите любую клавишу для продолжения...\n");
  61.     _getch();
  62. }
  63.  
  64. void Rand_Str(char* &str, int &Size){
  65.     system("cls");
  66.     printf("[Рандомное заполнение строки]\nВведите длину строки: ");
  67.     Size = Write_int();
  68.     str = new char[Size];
  69.     srand(time(0));
  70.     for (int i = 0; i < Size; i++){
  71.         str[i] = 97 + rand() % 26; //97-122
  72.     }
  73.     printf("%s", str);
  74.     printf("\nНажмите любую клавишу для продолжения...\n");
  75.     _getch();
  76. }
  77.  
  78. void Obr_Str(char* &str, int Size, char vowel[]){
  79.     system("cls");
  80.     int vowelCount, aCount;
  81.     vowelCount = aCount = 0;
  82.     for (int i = 0; i < Size; i++){
  83.         if (str[i] == 'a')
  84.             aCount++;
  85.         for (int j = 0; j < 6; j++){
  86.             if (str[i] == vowel[j])
  87.                 vowelCount++;
  88.         }
  89.     }
  90.     printf("[Обработка строки]\nКол-во гласных: %d\nКол-во букв 'а': %d\n", vowelCount, aCount);
  91.     printf("Нажмите любую клавишу для продолжения...\n");
  92.     _getch();
  93. }
  94.  
  95. void Output_Str(char* str){
  96.     system("cls");
  97.     printf("[Вывод строки]\nСтрока:\n%s\n", str);
  98.     printf("Нажмите любую клавишу для продолжения...\n");
  99.     _getch();
  100. }
  101.  
  102. void Author(){
  103.     system("cls");
  104.     printf("[Автор]:\nИмя: Усов Максим Андреевич\nКонтакты:\nE-mail: usow.maxim2016@yandex.ru\nVK: vk.com/merykov\n");
  105.     printf("Нажмите любую клавишу для продолжения...\n");
  106.     _getch();
  107. }
  108.  
  109. bool Exit(){
  110.     system("cls");
  111.     printf("[Выход]\n");
  112.     return false;
  113. }
  114.  
  115. int main()
  116. {
  117.     SetConsoleCP(65001);
  118.     SetConsoleOutputCP(65001);
  119.  
  120.     char* str;
  121.     str = new char[16];
  122.     int Size;
  123.     char vowel[] = "aeiouy";
  124.  
  125.     bool RUN = true;
  126.     bool f = false;
  127.     while(RUN){
  128.         system("cls");
  129.         printf("1.Ввод строки вручную\n2.Рандомное заполнение строки\n");
  130.         if (f)
  131.             printf("3.Обработка строки\n4.Вывод строки\n");
  132.         printf("5.Автор\n6.Выход\n");
  133.         switch(_getch()){
  134.             case '1':
  135.             {
  136.                 Input_Str(str, Size);
  137.                 f = true;
  138.                 break;
  139.             }
  140.             case '2':
  141.             {
  142.                 Rand_Str(str, Size);
  143.                 f = true;
  144.                 break;
  145.             }
  146.             case '3':
  147.             {
  148.                 if (f)
  149.                     Obr_Str(str, Size, vowel);
  150.                 break;
  151.             }
  152.             case '4':
  153.                 if (f)
  154.                     Output_Str(str);
  155.                 break;
  156.             case '5':
  157.                 Author();
  158.                 break;
  159.             case '6':
  160.                 RUN = Exit();
  161.                 break;
  162.             default:
  163.                 break;
  164.         }
  165.     }
  166.     delete[] str;
  167.     return 0;
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement