ВпрограммеC++.Ввести массив символов разделителей с
заданным количеством символов,число
и массив строк текста,содержащий
неизвестное заранее количество строк.Последней строкой текста будет строка,после ввода которой количество одинаковых
слов в тексте превысит заданное в
исходных данных число.Из строк введенного
текста сформировать другой текст,в
котором строки будут располагаться в
порядке увеличения количества символов
разделителей с одновременным удалением
строк,в которых было повторение любого
символа разделителя.

1

Ответы и объяснения

2013-11-18T17:24:46+04:00
#include <iostream>
#include <set>
#include <vector>
#include <algorithm>
#include <string>


int main (){
freopen ("input.txt", "r", stdin);
freopen ("output.txt", "w", stdout);
int n;
std::cin >> n;
std::set<char> seps;
char * s = new char[256];
std::cin.getline(s, n * 2);
std::cin.getline(s, n * 2);
for (int i = 0; i < n; i++){
seps.insert (s[i*2]);
}
int x;
std::cin >> x;
std::vector<std::pair<int, char*>> text;
std::cin.getline(s, 100);
int wordsCount = 0;
do {
char * str = new char[256];
char c;
int i = 0, count = 0;
bool del = false;
std::set<char> s;
while ((c = getchar()) != '\n'){ 
str[i++] = c;
if (seps.find(c) != seps.end()){
count++;
if (s.find(c) != s.end()) del = true;
else s.insert(c);
}
};
str[i++] = '\0';
if (!del) text.push_back (std::make_pair(count, str));
wordsCount += count + 1;
} while (wordsCount <= x);
sort (text.begin(), text.end());
for (int i = 0; i < text.size(); i++)
std::cout << text[i].second << "\n";
}