Usow_Maxim

Lab_7.1

Dec 22nd, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.14 KB | None | 0 0
  1. #include <cstdio>
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #include <string>
  5. #include <iostream>
  6. #include <fstream>
  7.  
  8. using namespace std;
  9.  
  10. int Write_int()
  11. {
  12.     char arr[10];
  13.     int value = 0;
  14.     while(true)
  15.     {
  16.         scanf("%s", arr);
  17.         value = atoi(arr)? atoi(arr) : 0;
  18.         if(value > 0)
  19.             break;
  20.         else
  21.             printf("Введите значение n > 0: ");
  22.     }
  23.     return value;
  24. }
  25.  
  26. int strSize(char* str)
  27. {
  28.     int i = 0;
  29.     while(str[i] != '\0')
  30.         i++;
  31.     return i;
  32. }
  33.  
  34. char** File_Read(int &Size)
  35. {
  36.     char** str = NULL;
  37.     char fileName[100];
  38.     printf("Введите путь к файлу: ");
  39.     scanf("%s", fileName);
  40.     FILE* f = NULL;
  41.     f = fopen(fileName, "r");
  42.     if(f == NULL)
  43.     {
  44.         printf("Ошибка чтения файла...\nВозвращаю в главное меню.\n");
  45.         return str;
  46.     }
  47.     char myString[100];
  48.     fgets(myString, 100, f);
  49.     Size = atoi(myString)? atoi(myString) : 0;
  50.     if(Size > 0)
  51.     {
  52.         str = new char*[Size];
  53.         printf("Загрузка данных:\n");
  54.         for(int i = 0; i < Size; i++)
  55.         {
  56.             fscanf(f, "%s ", myString);
  57.             printf("%s ", myString);
  58.             int StringSize = strSize((char*)myString);
  59.             str[i] = new char[StringSize + 1];
  60.             for(int j = 0; j < StringSize; j++)
  61.                 str[i][j] = myString[j];
  62.             str[i][StringSize] = '\0';
  63.         }
  64.     }
  65.     fclose(f);
  66.     printf("\n");
  67.     return str;
  68. }
  69.  
  70. int ShowMenu()
  71. {
  72.     int val;
  73.     while(true)
  74.     {
  75.         printf("---------------\n1.Загрузка из файла\n2.Обработка данных\n3.Вывод результата на экран.\n4.Выход\n---------------\nВыбор: ");
  76.         val = Write_int();
  77.         if(val < 5)
  78.         {
  79.             printf("\n");
  80.             break;
  81.         }
  82.     }
  83.     return val;
  84. }
  85.  
  86. void Obrab(char**str, int Size)
  87. {
  88.     //Поиск самого длинного элемента массива.
  89.     int theLongerElement = 0;
  90.     int indexElem = 0;
  91.     for(int i = 0; i < Size; i++){
  92.         int StringSize = strSize(str[i]);
  93.         if(StringSize > theLongerElement)
  94.         {
  95.             theLongerElement = StringSize;
  96.             indexElem = i;
  97.         }
  98.     }
  99.  
  100.     //Кол. повторен самого длинного элемента.
  101.     int Count = 0;
  102.     for(int i = 0; i < Size; i++)
  103.         if(strcmp(str[i], str[indexElem]) == 0)
  104.             Count++;
  105.  
  106.     //Вывод 1
  107.     printf("Длинное слово - %s\nКол. повоторений - %d\n", str[indexElem], Count);
  108.  
  109.     //Сортировка по алфавиту.
  110.     char cur[100];
  111.     for(int i = 0; i < Size; i++)
  112.         for(int j = i + 1; j < Size; j++)
  113.             if(strcmp(str[i], str[j]) > 0)
  114.             {
  115.                 strcpy(cur, str[i]);
  116.                 strcpy(str[i], str[j]);
  117.                 strcpy(str[j], cur);
  118.             }
  119.  
  120.     //Вывод 2
  121.     printf("Сортировка:\n");
  122.     for(int i = 0; i < Size; i++)
  123.         printf("%s\n", str[i]);
  124.     printf("\n");
  125. }
  126.  
  127. void Output(char** str, int Size)
  128. {
  129.     printf("Вывод:\n");
  130.     for(int i = 0; i < Size; i++)
  131.     {
  132.         printf("%s ", str[i]);
  133.     }
  134.     printf("\n");
  135. }
  136.  
  137. int main()
  138. {
  139.     SetConsoleCP(1251);
  140.     SetConsoleOutputCP(1251);
  141.  
  142.     int Size = 1;
  143.     char** str = new char*[1];
  144.     str[0] = new char[1];
  145.     str[0][0] = '\0';
  146.  
  147.     bool Exit = false;
  148.     while(!Exit)
  149.     {
  150.         switch(ShowMenu())
  151.         {
  152.             case 1:
  153.                 str = File_Read(Size);
  154.                 break;
  155.             case 2:
  156.             {
  157.                 Obrab(str, Size);
  158.                 break;
  159.             }
  160.             case 3:
  161.             {
  162.                 Output(str, Size);
  163.                 break;
  164.             }
  165.             case 4:
  166.                 Exit = true;
  167.                 break;
  168.             default:
  169.                 break;
  170.         }
  171.     }
  172.  
  173.     //Чистка данных
  174.     for(int i = 0; i < Size; i++)
  175.         delete[] str[i];
  176.     delete[] str;
  177.  
  178.     return 0;
  179. }
Add Comment
Please, Sign In to add comment