SHARE
TWEET

Untitled

a guest Mar 21st, 2017 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Лаба2_МЛиТА.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. // МЛиТА лр №2 функции.cpp: определяет точку входа для консольного приложения.
  5. //
  6.  
  7. #include "stdafx.h"
  8. #include <iostream>
  9. #include <fstream>  
  10. #include <cctype>
  11. using namespace std;
  12. int sentence_punct[30] = { 0 },
  13. index[30] = { 0 },
  14. max_punct[30] = { 0 };
  15. ifstream inp("input.txt");
  16. // Подсчет кол-во символов в файле.
  17. int number_Symbol(int N)
  18. {
  19.     inp.seekg(0, inp.end);
  20.     streampos place = inp.tellg();
  21.     N = place;
  22.     inp.seekg(0, inp.beg);
  23.     return N;
  24. }
  25. // Подсчёт количества знаков препинания в каждом предлжении и поиск максимального из них.
  26. int Counting_Numb_Punct_Count(char *array, int N)
  27. {
  28.     inp.seekg(0, inp.beg);
  29.     int number_Sentence = 0, max = 0, i;
  30.  
  31.     for (i = 0; (!inp.eof()); i++)
  32.     {
  33.         array[i] = inp.get();
  34.         // Проверка на наличие знаков препинания
  35.         if (array[i] == ',' || array[i] == ';' || array[i] == ':' || array[i] == '-')
  36.         {
  37.             index[number_Sentence]++;
  38.         }
  39.         // Проверка на конец предложения
  40.         if (array[i] == '.' || array[i] == '!' || array[i] == '?')
  41.         {
  42.             if (max<index[number_Sentence])
  43.             {
  44.                 max = index[number_Sentence];
  45.             }
  46.             number_Sentence++;
  47.             sentence_punct[number_Sentence] = inp.tellg();
  48.         }
  49.     }
  50.     int k, good_sentence;
  51.     // Поиск предложений с максимальным кол-м знаков пунктуации и подсчет их кол-ва.
  52.     for (k = 0, good_sentence = 0; k < number_Sentence; k++)
  53.     {
  54.         if (max == index[k])
  55.         {
  56.             max_punct[good_sentence] = k;
  57.             good_sentence++;
  58.         }
  59.     }
  60.     return good_sentence;
  61. }
  62. // Вывод на консоль искомых предложений
  63. void Output(char *array, int Good_Sentence_2)
  64. {
  65.     for (int i = 0; i < Good_Sentence_2; i++)
  66.     {
  67.         int max_index = sentence_punct[max_punct[i]];
  68.         while (true)
  69.         {
  70.             if (array[max_index] != '.')
  71.             {
  72.                 cout << array[max_index];
  73.                 max_index++;
  74.                 continue;
  75.             }
  76.             else
  77.             {
  78.                 cout << "." << endl;
  79.                 break;
  80.             }
  81.         }
  82.     }
  83. }
  84. int main()
  85. {
  86.     setlocale(LC_ALL, "RUS");
  87.     if (!inp)
  88.     {
  89.         cout << "MISTAKE!!" << endl;
  90.         exit(1);
  91.     }
  92.     int N = 1, j;
  93.     N = number_Symbol(N);
  94.     char *array = new char[N];
  95.     int Good_Sentence_2;
  96.     Good_Sentence_2 = Counting_Numb_Punct_Count(array, N);
  97.     Output(array, Good_Sentence_2);
  98.     delete[] array;
  99.     inp.close();
  100.     return 0;
  101. }
RAW Paste Data
Want to get better at C++?
Learn to code C++ in 2017
Pastebin PRO Summer Special!
Get 40% OFF on Pastebin PRO accounts!
Top