Advertisement
Usow_Maxim

Lab 5

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