Advertisement
Usow_Maxim

Lab_7.10

Mar 9th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.66 KB | None | 0 0
  1. #include <cstdio>
  2. #include <stdio.h>
  3. #include <windows.h>
  4.  
  5. int Write_int()
  6. {
  7.     char arr[10];
  8.     int value = 0;
  9.     while(true)
  10.     {
  11.         scanf("%s", arr);
  12.         if(atoi(arr))
  13.             value = atoi(arr);
  14.         if(value > 0)
  15.             break;
  16.         else
  17.             printf("Введите значение n > 0: ");
  18.     }
  19.     return value;
  20. }
  21.  
  22. char** FileRead(int &Size)
  23. {
  24.     char** str = NULL;
  25.     char** copyStr = NULL;
  26.     Size = 0;
  27.     printf("Введите название файла: ");
  28.     char fileName[100];
  29.     scanf("%s", fileName);
  30.     FILE* f = fopen(fileName, "r");
  31.     if(f != NULL)
  32.     {
  33.         printf("Чтение:\n");
  34.         char buf[1000];
  35.         while(!feof(f))
  36.         {
  37.             if(fscanf(f, "%[^\n]\n", buf))
  38.             {
  39.                 char** copyStr = new char*[Size + 1];
  40.                 for(int i = 0; i < Size; i++)
  41.                 {
  42.                     copyStr[i] = new char[strlen(str[i])];
  43.                     strcpy(copyStr[i], str[i]);
  44.                     delete[] str[i];
  45.                 }
  46.                 delete[] str;
  47.                 str = new char*[Size + 1];
  48.                 for(int i = 0; i < Size; i++)
  49.                 {
  50.                     str[i] = new char[strlen(copyStr[i])];
  51.                     strcpy(str[i], copyStr[i]);
  52.                     delete[] copyStr[i];
  53.                 }
  54.                 delete[] copyStr;
  55.                 str[Size] = new char[strlen(buf)];
  56.                 strcpy(str[Size], buf);
  57.                 printf("%s\n", str[Size]);
  58.                 Size++;
  59.             }
  60.         }
  61.     }
  62.     else
  63.     {
  64.         printf("Ошибка чтения!\n");
  65.     }
  66.     fclose(f);
  67.     return str;
  68. }
  69.  
  70. void Obrab(char**str, int Size, char glasnie[])
  71. {
  72.     printf("a)\n");
  73.     for(int i = 0; i < Size; i++)
  74.     {
  75.         bool chp = false;
  76.  
  77.         if(strlen(str[i]) >= 2 && str[i][strlen(str[i]) - 2] == 'о' && str[i][strlen(str[i]) - 1] == 'в')
  78.             chp = true;
  79.         if(strlen(str[i]) >= 3 && str[i][strlen(str[i]) - 3] == 'о' && str[i][strlen(str[i]) - 2] == 'в' && str[i][strlen(str[i]) - 1] == 'а')
  80.             chp = true;
  81.         if(chp)
  82.             printf("%s\n", str[i]);
  83.     }
  84.  
  85.     printf("b)\n");
  86.     for(int i = 0; i < Size; i++)
  87.     {
  88.         bool chp = false;
  89.         for(int j = 0; j < 10; j++)
  90.             if(str[i][0] == glasnie[j])
  91.                 chp = true;
  92.         if(chp)
  93.             printf("%s\n", str[i]);
  94.     }
  95. }
  96.  
  97. void Output(char** str, int Size)
  98. {
  99.     printf("Вывод:\n");
  100.     for(int i = 0; i < Size; i++)
  101.     {
  102.         printf("%s ", str[i]);
  103.     }
  104.     printf("\n");
  105. }
  106.  
  107. int main()
  108. {
  109.     SetConsoleCP(1251);
  110.     SetConsoleOutputCP(1251);
  111.  
  112.     int Size = 0;
  113.     char** str = NULL;
  114.  
  115.     char glasnie[11] = "аоуыэяёюие";
  116.  
  117.     bool RUN = true;
  118.     while(RUN)
  119.     {
  120.         printf("---------------\n1.Загрузка из файла\n2.Обработка данных\n3.Вывод результата на экран.\n4.Выход\n---------------\nВыбор: ");
  121.         switch(Write_int())
  122.         {
  123.             case 1:
  124.                 str = FileRead(Size);
  125.                 break;
  126.             case 2:
  127.             {
  128.                 Obrab(str, Size, glasnie);
  129.                 break;
  130.             }
  131.             case 3:
  132.             {
  133.                 Output(str, Size);
  134.                 break;
  135.             }
  136.             case 4:
  137.                 RUN = false;
  138.                 break;
  139.             default:
  140.                 break;
  141.         }
  142.     }
  143.  
  144.     //Чистка данных
  145.     for(int i = 0; i < Size; i++)
  146.         delete[] str[i];
  147.     delete[] str;
  148.  
  149.     return 0;
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement