Advertisement
Usow_Maxim

Lab_7.4

Mar 30th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.96 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int Write_int()
  5. {
  6.     char arr[10];
  7.     int value = 0;
  8.     while(true)
  9.     {
  10.         scanf("%s", arr);
  11.         if(atoi(arr))
  12.         {
  13.             value = atoi(arr);
  14.             break;
  15.         }
  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, "%s ", 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. int MyToLower( char r)
  71. {
  72.      switch (r)
  73.      {
  74.          case 'А': r = 'а'; break;
  75.          case 'Б': r = 'б'; break;
  76.          case 'В': r = 'в'; break;
  77.          case 'Г': r = 'г'; break;
  78.          case 'Д': r = 'д'; break;
  79.          case 'Е': r = 'е'; break;
  80.          case 'Ё': r = 'ё'; break;
  81.          case 'Ж': r = 'ж'; break;
  82.          case 'З': r = 'з'; break;
  83.          case 'И': r = 'и'; break;
  84.          case 'Й': r = 'й'; break;
  85.          case 'К': r = 'к'; break;
  86.          case 'Л': r = 'л'; break;
  87.          case 'М': r = 'м'; break;
  88.          case 'Н': r = 'н'; break;
  89.          case 'О': r = 'о'; break;
  90.          case 'П': r = 'п'; break;
  91.          case 'Р': r = 'р'; break;
  92.          case 'С': r = 'с'; break;
  93.          case 'Т': r = 'т'; break;
  94.          case 'У': r = 'у'; break;
  95.          case 'Ф': r = 'ф'; break;
  96.          case 'Х': r = 'х'; break;
  97.          case 'Ц': r = 'ц'; break;
  98.          case 'Ч': r = 'ч'; break;
  99.          case 'Ш': r = 'ш'; break;
  100.          case 'Щ': r = 'щ'; break;
  101.          case 'Ъ': r = 'ъ'; break;
  102.          case 'Ы': r = 'ы'; break;
  103.          case 'Ь': r = 'ь'; break;
  104.          case 'Э': r = 'э'; break;
  105.          case 'Ю': r = 'ю'; break;
  106.          case 'Я': r = 'я'; break;
  107.      }
  108.      return (r);
  109. }
  110.  
  111. void Obrab(char** str, int Size)
  112. {
  113.     char glasnie[]("аоуыэяёюие");
  114.     char soglasnie[]("бвгджзйклмнпрстфхцчшщ");
  115.     printf("Вывод:\nС заглавной:\n");
  116.     for(int i = 0; i < Size; i++)
  117.         if(str[i][0] > 'А' && str[i][0] < 'Я')
  118.         {
  119.             printf("%s ", str[i]);
  120.             break;
  121.         }
  122.  
  123.     printf("\nС гласной:\n");
  124.     for(int i = 0; i < Size; i++)
  125.         for(int j = 0; j < 10; j++)
  126.             if(MyToLower(str[i][0]) == glasnie[j])
  127.             {
  128.                 printf("%s ", str[i]);
  129.                 break;
  130.             }
  131.  
  132.     printf("\nС согласной:\n");
  133.     for(int i = 0; i < Size; i++)
  134.         for(int j = 0; j < 21; j++)
  135.             if(MyToLower(str[i][0]) == soglasnie[j])
  136.             {
  137.                 printf("%s ", str[i]);
  138.                 break;
  139.             }
  140.     printf("\n");
  141. }
  142.  
  143. void Output(char** str, int Size)
  144. {
  145.     printf("Вывод:\n");
  146.     for(int i = 0; i < Size; i++)
  147.     {
  148.         printf("%s\n", str[i]);
  149.     }
  150.     printf("\n");
  151. }
  152.  
  153. int main()
  154. {
  155.     SetConsoleCP(1251);
  156.     SetConsoleOutputCP(1251);
  157.  
  158.     int Size = 0;
  159.     char** str = NULL;
  160.  
  161.     bool Exit = false;
  162.     while(!Exit)
  163.     {
  164.         printf("---------------\n1.Загрузка из файла\n2.Обработка данных\n3.Вывод результата на экран.\n4.Выход\n---------------\nВыбор: ");
  165.         switch(Write_int())
  166.         {
  167.             case 1:
  168.                 str = FileRead(Size);
  169.                 break;
  170.             case 2:
  171.                 Obrab(str, Size);
  172.                 break;
  173.             case 3:
  174.                 Output(str, Size);
  175.                 break;
  176.             case 4:
  177.                 Exit = true;
  178.                 break;
  179.             default:
  180.                 break;
  181.         }
  182.     }
  183.  
  184.     //Чистка данных
  185.     for(int i = 0; i < Size; i++)
  186.         delete[] str[i];
  187.     delete[] str;
  188.  
  189.     return 0;
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement