Advertisement
Usow_Maxim

Lab_9.8

Feb 19th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.31 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. using namespace std;
  5.  
  6. int WriteInt()
  7. {
  8.     char buf[10];
  9.     int value = 0;
  10.     while(true)
  11.     {
  12.         scanf("%s", buf);
  13.         value = (atoi(buf))? atoi(buf) : 0;
  14.         if(value > 0)
  15.             break;
  16.         else
  17.             printf("Введите значение n > 0: ");
  18.     }
  19.     return value;
  20. }
  21.  
  22. char** AddString(char** str, int &Size, char* buf)
  23. {
  24.     char** copyStr = new char*[Size + 1];
  25.     for(int i = 0; i < Size; i++)
  26.     {
  27.         copyStr[i] = new char[strlen(str[i])];
  28.         strcpy(copyStr[i], str[i]);
  29.     }
  30.     delete[] str;
  31.     str = new char*[Size + 1];
  32.     for(int i = 0; i < Size; i++)
  33.     {
  34.         str[i] = new char[strlen(copyStr[i])];
  35.         strcpy(str[i], copyStr[i]);
  36.     }
  37.     delete[] copyStr;
  38.     str[Size] = new char[strlen(buf)];
  39.     strcpy(str[Size], buf);
  40.     Size++;
  41.     return str;
  42. }
  43.  
  44. char** FileRead(int &Size, char fileName[], bool success = true)
  45. {
  46.     char** str = NULL;
  47.     Size = 0;
  48.     FILE* f = fopen(fileName, "r");
  49.     if(f != NULL)
  50.     {
  51.         char buf[1000];
  52.         while(!feof(f))
  53.         {
  54.             if(fscanf(f, "%s ", buf))
  55.             {
  56.                 str = AddString(str, Size, (char*)buf);
  57.             }
  58.         }
  59.     }
  60.     else
  61.     {
  62.         printf("Ошибка чтения файла!\n");
  63.         success = false;
  64.     }
  65.     fclose(f);
  66.     return str;
  67. }
  68.  
  69. void FileWrite(char** str, char fileName[], int Size)
  70. {
  71.     FILE* f = fopen(fileName, "w");
  72.     for(int i = 0; i < Size; i++)
  73.         fprintf(f, "%s\n", str[i]);
  74.     fclose(f);
  75. }
  76.  
  77. int main()
  78. {
  79.     SetConsoleCP(1251);
  80.     SetConsoleOutputCP(1251);
  81.  
  82.     int Size = 0;
  83.     char** str = NULL;
  84.  
  85.     int Sizer = 0;
  86.     char** strr = NULL;
  87.     char glasnie[7] = "aeiuyo";
  88.  
  89.     char buf[100] = "\0";
  90.     printf("Данная программа удаляет из файла слова содержащие N-ое количество гласных\n");
  91.     bool run = true;
  92.     while(run)
  93.     {
  94.         printf("Для начала введите файл который будет использован:\nFileName: ");
  95.         scanf("%s", buf);
  96.         bool suc = true;
  97.         str = FileRead(Size, buf, suc);
  98.         if(suc)
  99.         {
  100.             printf("Введите количество гласных N: ");
  101.             int N = WriteInt();
  102.             int glasnih = 0;
  103.             for(int i = 0; i < Size; i++)
  104.             {
  105.                 glasnih = 0;
  106.                 for(int j = 0; j < strlen(str[i]); j++)
  107.                     for(int k = 0; k < 6; k++)
  108.                         if(str[i][j] == glasnie[k])
  109.                             glasnih++;
  110.                 if(glasnih != N)
  111.                 {
  112.                     strr = AddString(strr, Sizer, str[i]);
  113.                 }
  114.             }
  115.             run = false;
  116.         }
  117.     }
  118.  
  119.     FileWrite(strr, "out.txt", Sizer);
  120.     printf("В файл out.txt было записано всё, кроме слов содержащих N-ое количество гласных:\n");
  121.     for(int i = 0; i < Sizer; i++)
  122.         printf("%s\n", strr[i]);
  123.  
  124.     //Delete
  125.     for(int i = 0; i < Sizer; i++)
  126.         delete[] strr[i];
  127.     delete[] strr;
  128.     for(int i = 0; i < Size; i++)
  129.         delete[] str[i];
  130.     delete[] str;
  131.  
  132.     return 0;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement