|
Программирование >> Структурное программирование
Упражнения на работу со строками 5.31. Напишите программу, которая использует функцию strcmp для сравнения двух строк, вводимых пользователем. Программа должна определять, первая строка меньше, равна или больше второй строки. 5.32. Напишите программу, которая использует функцию strncmp для сравнения двух строк, вводимых пользователем. Программа должна вводить количество сравниваемых символов. Программа должна определять, первая строка меньше, равна или больше второй строки. 5.33. Напишите программу, которая использует генерацию случайных чисел для создания предложений. Программа должна использовать четыре массива указателей на char, называемые article (артикль), noun (существительные), verb (глаголы) и preposition (предлоги). Программа должна создавать предложение, случайно выбирая слова из каждого массива в следующем порядке: article, noun, verb, preposition, article и noun. Как только слово выбрано, оно должно быть подсоединено к предыдущему слову в массиве, который достаточно велик для того, чтобы вместить все предложение. Слова должны быть разделены пробелами. При выводе окончательного предложения оно должно начинаться с заглавной буквы и заканчиваться точкой. Программа должна генерировать 20 таких предложений. (Замечание: к сожалению, для русского языка подобную программу сделать сложнее из-за падежных окончаний имен существительных.) Массивы должны быть заполнены следующим образом: массив article должен содержать артикли the , а , опе some* и апу ; массив noun должен содержать существительные: Ьоу , glrl*. 5.30. Что делает эта программа? tinclude <iostream.h> int mystery3(const char *, const char *); main () { char stringl[80], string2[80]; cout Введите две строки: ; cin stringl string2; cout Результат равен: mysteryS(stringl, string2) << endl; return 0; int mysteryS(const char *sl, const char *s2) { for ( ; *sl != \0 && *s2 != \0;sl++, s2++) if (*sl !=*s2) return 0; return 1; dog , town и саг ; массив verb должен содержать глаголы: drove , jumped , ran , walked и skipped ; массив preposition должен содержать предлоги to , from , over , under и on . После того, как вы написали предыдущую программу и она заработала, модифицируйте ее, чтобы она могла создавать короткие рассказы, состоящие из нескольких таких предложений. 5.34. (Лимерики) Лимерик - это шуточное пятистрочное стихотворение, в котором первая и вторая строчки рифмуются с пятой, а третья рифмуется с четвертой. Используя технику, подобную разработанной в упражнении 5.33, напишите программу на С++, которая создает случайным способом лимерики. Совершенствование этой программы с целью создания хороших лимериков - головоломная задача, но результат стоит усилий! 5.35. Напишите программу, которая кодирует фразы английского языка псевдолатынью. Псевдолатынь - это форма кодированного языка, часто используемая для развлечения. Существует много вариантов формирования фраз на псевдолатыни. Для простоты используйте следующий алгоритм: Чтобы сформировать фразу на псевдолатыни из фразы на английском языке, разбейте фразу на слова с помощью функции strtok. Для перевода каждого английского слова на язык псевдолатыни поместите первую букву английского слова в конец английского слова и прибавьте буквы ау . Таким образом слово jump превратится в umpjay , слово the превратится в hetay , а слово computer превратится в omputercay . Пропуски между словами сохраняются. Примем следующие допущения: английская фраза состоит из слов, разделенных пропусками, пунктуация отсутствует, все слова состоят не менее чем из двух букв. Функция printLatin-Word должна отображать каждое слово. Подсказка: каждая найденная с помощью функции strtok лексема должна передавать указатель на лексему функцию printLatinWord, которая печатает слово на псевдолатыни. 5.36. Напишите программу, которая вводит в виде строки телефонный номер в форме (555) 555-5555. Программа должна использовать функцию strtok для извлечения в виде лексем кода места (указывается в скобках), первых трех цифр и последних четырех цифр телефонного номера. Семь цифр телефонного номера должны соединяться друг с другом в одну строку. Программа должна преобразовывать в int строку кода места, и в long - строку номера телефона. И код места, и номер телефона должны быть напечатаны. 5.37. Напишите программу, которая вводит строку текста, разбивает ее на лексемы с помощью функции strtok и выводит лексемы в обратном порядке. 5.38. Используйте функцию сравнения строк, обсужденную в разделе 5.12.2, и технику сортировки массивов, разработанную в главе 4, для написания программы, которая располагает список строк в алфавитном порядке. Используйте названия 10 или 15 городов в вашей местности в качестве данных для вашей программы. 5.39. Напишите по два варианта функций копирования строк и объединения строк, повторяюп];их функции, приведенные на рис. 5.29. Первый вариант должен использовать индексацию массива, а второй вариант должен использовать указатели и арифметические операции с ними. 5.40. Напишите два варианта функций сравнения строк, повторяющих функции, приведенные на рис. 5.29. Первый вариант должен использовать индексацию массива, а второй вариант должен использовать указатели и арифметические операции с ними. 5.41. Напишите два варианта функции strlen. Первый вариант должен использовать индексацию массива, а второй вариант должен использовать указатели и арифметические операции с ними. Специальный раздел: упражнения повышенной сложности на работу со строками Предыдущие упражнения были базовыми и предназначались для проверки понимания читателем основных принципов работы со строками. Данный раздел включает группу упражнений средней и повышенной сложности на работу со строками. Читатель получит удовольствие от головоломности этих задач. Задачи весьма трудны. Некоторые требуют для своей реализации одного - двух часов работы. Другие полезны для лабораторных занятий и могут требовать двух или трех недель. Некоторые находятся на уровне проектов. 5.42. (Анализ текстов) Способность компьютеров обрабатывать строки позволяет реализовать некоторые довольно интересные подходы к анализу произведений великих писателей. Много внимания было уделено в свое время вопросу о том, существовал ли когда-либо Вильям Шекспир. Некоторые филологи полагают, что имеются существенные обстоятельства, указывающие на то, что шедевры, приписываемые Шекспиру, написали на самом деле Кристофер Марло или другие авторы. Исследователи использовали компьютеры для поиска сходства в творениях этих двух авторов. В данном упражнении рассматриваются три способа компьютерного анализа текстов. a) Напишите программу, которая считывает с клавиатуры несколько строк текста и печатает таблицу, показывающую, сколько раз в тексте встречается каждая буква алфавита. Например, фраза То Ье, or not to be: that is the question; содержит одну букву а , две Ь , ни одной с и т.д. b) Напишите программу, которая читает несколько строк текста и печатает таблицу, показывающую, сколько раз в тексте встречаются однобуквенные слова, двухбуквенные слова, трехбуквенные слова и т.д. Например, фраза Whether tis nobler in the mind to suffer содержит
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |