1. в языке запросов поискового сервера для обозначения логической операции «или» используется символ «|», а для логической операции «и» – символ «& ».
в таблице запросы и количество найденных по ним страниц некоторого сегмента сети интернет.
запрос
найдено страниц
(в тысячах)
пекин & (москва | токио)
338
пекин & москва
204
пекин & москва & токио
50
какое количество страниц (в тысячах) будет найдено по запросу пекин & токио?
считается, что все запросы выполнялись практически одновременно, так что набор страниц, содержащих все искомые слова, не изменялся за время выполнения запросов.
Берём пустые сосуды.
Наполняем 5-литровый и переливаем в 7литровый.
Результат: 5литровый - пуст, в 7литровом - 5 литров.
Наполняем 5литровый и переливаем в 7литровый столько, чтобы 7литровый наполнился.
Результат: 7литровый полон ( 5было + 2литра из 5литрового). В 5литровом 3 литра(5 было - 2 пепелили в 7литровый).
7литровый опустошаем и в него переливаем содержимое 5литрового.
Результат: 5литровый пуст (перелили в 7литровый), в 7литровом 3 литра.
Наполняем 5 литровый и переливаем в 7литровый столько, чтобы 7литровый заполнился.
Результат : 7литровый полон ( 3литра было + 4литра из 5 литрового. В 5литровом остался литр (5 литров - 4литра перелили в 7литровый).
Требуемый литр в 5литровом.
.
Есть еще один
.
берём также пустые сосуды. Наполняем 7литровый. переливаем в 5литровый столько, чтобы 5литровый наполнился.
результат: в 7литровом - 2 литра (5 перелили в 5литровый), 5 литровый полон.
опустошаем 5 литровый и заливаем в него содержимое 7литрового.
результат: 7 литровый - пуст, в 5литровом - 2литра.
наполняем 7литровый и переливаем в 5 литровый столько, чтобы наполнить 5литровый.
результат: 5литровый полон (2литра +3литра из 7литрового), в 7литровом - 4литра (7литров - 3литра перелили в 5литровый).
5литровый опустошаем и в него заливаем содержимое 7литрового.
результат: 7литровый пуст, в 5литровом - 4литра.
наполняем 7литровый и переливаем в 5литровый столько, чтобы наполнить литровый.
результат: 5литровый полон(4литра +1литр из 7литрового), в 7литровом-6литров.
опустошаем 5 литровый и заливаем в него из 7литрового столько, чтобы 5литровый заполнился.
результат: 5литровый полон, в 7литровом - 1литр (6литров - 5литров перелили в 5литровый). искомый литр в 7литровом сосуде
Итак, целевой язык - C++. Это значит мы - радостные обладатели технологии потоков, с коей мы будем производить весь ввод/вывод как при работе с файлами, так и при работе со стандартным вводом/выводом (консолью).
Ну а раз уж мы работаем с потоками, то будем делать это красивенько: создадим класс-обёртку для потока ввода, цель которого - поиск в этом потоке цитат и отправка их на поток вывода (который мы передаём).
[!] Стоит отметить, что по заданию не сказано, что есть разница между ' и ". Поэтому будем считать их одинаковыми.
[!] Внимание! Рядом с исполняемым файлом надо создать текстовый файл data.txt c текстом и цитатами.
КодС++11
#include <iostream>#include <fstream>using std::cout;class QuotesFinder { std::istream &in_stream; bool is_it_in_quote = false;public: QuotesFinder() = delete; QuotesFinder(QuotesFinder&&) = default; QuotesFinder(QuotesFinder const&) = default; explicit QuotesFinder(std::istream &is) : in_stream(is) {} [[nodiscard]] bool eof() const { return in_stream.eof(); } // Вот тут происходит вся магия QuotesFinder& operator >> (std::ostream& out_stream) { char buffer; in_stream.get(buffer); //Получаем очередной символ из потока if (buffer == '\"' || buffer == '\'') { if (is_it_in_quote) { is_it_in_quote = false; out_stream << buffer; out_stream << "\n"; return *this; } is_it_in_quote = true; } if (is_it_in_quote) { out_stream << buffer; } return *this; }};int main() { std::ifstream file("data.txt"); // Открываем файл if (!file.is_open()) { cout << "File is not exits!"; return 1; } QuotesFinder finder(file); // Создаём обёртку из файлового потока while (!finder.eof()) // Пока не достигли конца потока finder >> cout; // переправляем очередной кусок информации в поток вывода}