Назад | Начало урока | Вперед
Содержание

Глава 3

Упражнения
  1. Напишите и протестируйте функцию, которая переставляет символы строки в обратном порядке.

  2. Палиндромом называется слово или фраза, которые одинаково читаются в обоих направлениях (например madam или wow). Напишите программу, которая читает строковый аргумент из командной строки и при помощи функции из предыдущего упражнения проверяет, является ли эта строка палиндромом.

  3. Измените программу из упражнения 2, чтобы она возвращала true даже в том случае, если симметричные символы различаются регистром. Например слово Civic должно считаться палиндромом, хотя его первая буква принадлежит к верхнему регистру.

  4. Измените программу из упражнения 3, чтобы она игнорировала пробелы и знаки препинания. Например для строки Able was I, ere I saw Elba должно возвращаться значение true

  5. Рассмотрим следующее объявление строк:

    string one("")
    string two("")
    string three("")

    Используя только эти объявления и символы char (никаких строковых оитералов или "волшебных чисел"), постройте последовательность предложений: ..

  6. Напишите программу .., которая получает из командной тсроки три аргумента: входной текстовый файл, заменяемую строку (назовем ее ..), и строку замены (назовем ее to). Программа должна записать в стандартный выходной поток новый файл, в котором все вхождения .. заменяются на to.

  7. Повторите предыдущее упражнение так, чтобы заменялись все экземпляры from езависимо от регистра символов.

  8. Измените программу из упражнения 3, чтобы она читала имя файла из командной строки и выводила все слова-палиндромы из этого файла (без учета регистра). Не выводите дубликаты даже при различиях в регистре символов. Не пытайтесь искать палиндромы, размер которых превышает одно слово (в отличие от упражнения 4).

  9. Измените программу .., чтобы при обнаружении тегов, она выводила имя тега и содержимое файла между начальными и конечными тегами. Предполагается, что вложенные теги отсутствуют, а конечные теги всегда задаются явно (в формате </тег>).

  10. Напишите программу, которая получает из командной строки три аргумента (имя файла и две строки) и выводит на консоль все логические строки файла, содержащие обе искомые строки, одну из них или ни одной, в зависимости от того, какой режим выберет пользователь в начале программы. Во всех режимах, кроме последнего, выделите входные строки (или строку), отметив их начало и конец символами *.

  11. Напишите программу, которая получает из командной строки два аргумента (имя файла и строку) и подсчитывает количество вхождений строки в файл даже в составе других слов. Перекрывающиеся вхождения игнорируются. Например входная строка "ba" обнаруживается в слове "basketball" дважды, но входная строка .. обнаруживается в слове .. только один раз. Выведите на консоль количество вхождений и среднюю длину слов, в которых присутствуют совпадения (если строка входит в слово несколько раз, учитывается только одно вхождение).

  12. Напишите программу, которая получает из командной строки имя файла и выводит информацию об использовании всех символов, включая знаки препинания и пробелы (символы с кодами от .. до .., а так же пробел). Иначеговоря подсчитайте количество вхождений каждого символа в файл и выведите результаты отсортированными либо последовательно (пробел, затем !,",# и тд), либо по возрастанию или убыванию количества вхождений в зависимости от пользовательского ввода в начале программы. Для пробела вместо символа ' ' выводится строка Space. Примерный результат выглядит так:

    ...

  13. Используя функции .. и .., напишите программу, которая получает из командной строки два аргумента (имя файла и строку) и выведите первое и последнее слова (и их индексы), не совпадающие с заданной строкой, а так же индексы первого и последнего вхождений строки. Если ни одна из проверок не дает результатов, выведите ..

  14. Используя функции семейства .., напишите программу, которая получает из командной строки имя файла и преобразует все числа в этом файле к формату денежных величин. Игнорируйте десятичные точки после первой до обнаружения нечислового символа, а затем округлите до двух чисел в дробной части. Например строка .. приводится к виде ..

  15. Напишите программу, которая получает из командной строки три аргумента (имя файла и число) и переставляет буквы в словах. Для этого программа выбирает две буквы, меняет их местами и повторяет эту процедуру столько раз, сколько задано вторым аргументом. Например, если во втором аргументе передается 0, слова не изменяются; если второй аргумент равен 1, меняется местами одна пара букв; если второй аргумент равен 2, меняется местами две пары и тд.

  16. Напишите программу, которая получает из командной строки имя файла и выводит количество предложений в этом файле (определяемое по количеству точек), среднее количество символов в одном предложении и общее количество символов в файле.

  17. Докажите, что функция .. действительно запускает исключение при недопустимом значении индекса, а оператор индексирования [] этого не делает.

  18. Используя функции семейства .. (но не ограничиваясь ими), напишите программу, которая удаляет из файла все неалфавитные символы, кроме точек и пробелов, а затем преобразует каждую первую букву, следующую после точки к верхнему регистру.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz