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


         

Соберем все вместе - часть 5


                << "Requested query: "

                << *query << "\n\n";

           const set<short,less<short>,allocator> *solution = query->solution();

          

           if ( ! solution->size() ) {

                cout << "\n\t"

                    << "Sorry, no matching lines were found in text.\n"

                    << endl;

           }

           set<short>::const_iterator

                  it = solution->begin(),

                  end_it = solution->end();

           for ( ; it != end_it; ++it ) {

                  int line = *it;

                  // пронумеруем строки с 1 ...

                  cout << "( " << line+1 << " ) "

                       << (*lines_of_text)[line] << '\n';

           }

           cout << endl;

}

Упражнение 17.26

Нашему классу TextQuery не хватает возможности принимать аргументы, заданные пользователем в командной строке.

(a)    Предложите синтаксис командной строки для нашей поисковой системы.

(b)   Добавьте в класс необходимые данные и функции-члены.

(c)    Предложите средства для работы с командной строкой (см. пример в разделе 7.8).

Упражнение 17.27

В качестве темы для рабочего проекта рассмотрите следующие усовершенствования нашей поисковой системы:

(a)    Реализуйте поддержку, необходимую для представления запроса AndQuery в виде одной строки, например “Motion Picture Screen Cartoonists”.

(b)   Реализуйте поддержку для ответа на запрос на основе вхождения слов не в строку, а в предложение.

(c)    Реализуйте подсистему хранения истории, с помощью которой пользователь мог бы ссылаться на предыдущий запрос по номеру, возможно, комбинируя его с новым запросом.

(d)   Вместо того чтобы показывать счетчик найденных и все найденные строки, реализуйте возможность задать диапазон выводимых строк для промежуточных вычислений и для окончательного ответа:

==> John && Jacob && Astor

(1)    john ( 3 ) lines match

(2)    jacob ( 3 ) lines match

(3)    john && jacob ( 3 ) lines match

(4)    astor ( 3 ) lines match

(5)    john && jacob && astor ( 5 ) lines match

// Новая возможность: пусть пользователь укажет, какой запрос выводить

// пользователь вводит число

==> вывести? 3

// Затем система спрашивает, сколько строк выводить

// при нажатии клавиши Enter выводятся все строки,

// но пользователь может также ввести номер одной строки или диапазон

ð                                сколько (Enter выводит все, иначе введите номер строки или диапазон) 1-3




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