С++ для начинающих




Использование обобщенных алгоритмов - часть 9


           // в реальной программе надо бы выполнить проверку

     cout << "text file #1: "; cin >> t1fn;

     cout << "text file #2: "; cin >> t2fn;

           // открыть файлы

     ifstream infile1( t1fn.c_str());

     ifstream infile2( t2fn.c_str());

           // специальная форма итератора

           // обычно diff_type подразумевается по умолчанию ...

     istream_iterator< string, diff_type > input_set1( infile1 ), eos;

     istream_iterator< string, diff_type > input_set2( infile2 );

           // специальная форма итератора

     copy( input_set1, eos, back_inserter( t1 ));

     copy( input_set2, eos, back_inserter( t2 ));

     sample.push_back( t1 ); sample.push_back( t2 );

     process_vocab( &sample );

}

Упражнение 12.2

Длина слова – не единственная и, вероятно, не лучшая мера трудности текста. Другой возможный критерий – это длина предложения. Напишите программу, которая читает текст из файла либо со стандартного ввода, строит вектор строк для каждого предложения и передает его алгоритму count(). Выведите предложения в порядке сложности. Любопытный способ сделать это – сохранить каждое предложение как одну большую строку во втором векторе строк, а затем передать этот вектор алгоритму sort() вместе с объектом-функцией, который считает, что чем строка короче, тем она меньше. (Более подробно с описанием конкретного обобщенного алгоритма, а также с иллюстрацией его применения вы может ознакомиться в Приложении, где все алгоритмы перечислены в алфавитном порядке.)

Упражнение 12.3

Более надежную оценку уровня трудности текста дает анализ структурной сложности предложений. Пусть каждой запятой присваивается 1 балл, каждому двоеточию или точке с запятой – 2 балла, а каждому тире – 3 балла. Модифицируйте программу из упражнения 12.2 так, чтобы она подсчитывала сложность каждого предложения. Воспользуйтесь алгоритмом count_if() для нахождения каждого из знаков препинания в векторе предложений. Выведите предложения в порядке сложности.




Содержание  Назад  Вперед