|
Программирование >> Структурное программирование
с) Напишите программу, которая считывает несколько строк текста и печатает таблицу, показываюш;ую, сколько раз в тексте встречаются одинаковые слова. Первый вариант вашей программы должен включать слова в таблицу в том порядке, в котором они встречаются в тексте. Например, строки То be, or not to be: that is the question; Whether tis nobler in the mind to suffer содержат слово to* три раза, слово be два раза, слово ог один раз и т.д. Более интересна и полезна распечатка, в которой слова будут рассортированы в алфавитном порядке. 5.43. (Обработка слов) Важной функцией текстовых редакторов является выравнивание текста - выравнивание слов по левому и правому полю страницы. Это создает профессионально выглядящий документ, вид которого более похож на выполненный в типографии, чем подготовленный на пишущей машинке. Выравнивание текста можно выполнить на компьютерных системах, вставляя пробелы между словами в строке так, чтобы крайнее правое слово совпадало с правым полем. Напишите программу, которая считывает несколько строк текста и печатает этот текст с выровненными полями. Будем считать, что текст напечатан на бумаге шириной 8.5 дюймов и что с правой и левой стороны напечатанной страницы допускаются поля шириной в 1 дюйм. Предполагайте, что компьютер печатает 10 символов на одном дюйме. Следовательно, ваша программа должна печатать 6.5 дюймов текста или 65 символов на строку. 5.44. (Печать дат в различных форматах) Обычно даты в деловой корреспонденции печатаются в нескольких различных форматах. Наиболее типичными из них являются два: 07/21/55 и Июль 21, 1955 Напишите программу, которая считывает даты в первом формате и печатает их во втором формате. 5.45. (Защита чеков) Компьютеры часто используются в системах выписывания чеков, платежных ведомостей, счетов на оплату. Циркулирует множество странных историй, связанных с ошибочной печатью платежных чеков на суммы свыше 1 миллиона долларов. Роковые счета печатаются компьютерными системами документи- 12345678 (номера позиций) С другой стороны, если сумма меньше чем 1000 долларов, то несколько пробелов с левой стороны бланка останутся незаполненными. Например, 99.87 12345678 содержит три пустых пробела. Если чек напечатан с пустыми пробелами, сумму чека легко подделать. Чтобы защитить чек от подделки, многие системы документирования чеков вставляют начальные звездочки для защиты счета, как например: ***99.87 12345678 Напишите программу, которая вводит сумму в долларах, которая должна быть напечатана в чеке, и затем печатает ее в защищенном формате с начальными звездочками. Примите, что для печати суммы выделяется девять пробелов. 5.46. (Написание словесного эквивалента суммы чека) Продолжая обсуждение предыдущего примера, мы еще раз отметим важность проектирования систем документирования чеков, предотвращающих подделки чековых сумм. Один из наиболее типовых способов защиты требует, чтобы чековая сумма была написана как цифрами, так и словами. Даже если кому-либо удастся подделать сумму в цифрах, чрезвычайно сложно изменить сумму, выраженную словами. Многие компьютерные системы документирования чеков не печатают сумму чека словами. Возможно, главной причиной этого недостатка является тот факт, что большинство языков высокого уровня, используемых в коммерческих приложениях, не содержат адекватных средств работы со строками. Другой причиной является то, что логика для написания словесных эквивалентов чековых сумм довольно запутана. рования чеков из-за человеческих ошибок или машинных сбоев. Разработчики систем используют встроенный контроль для предотвращения выпуска таких ошибочных чеков. Другой серьезной проблемой является интенсивная подделка чеков теми, кто намеревается мошеннически получить по ним деньги. Чтобы защитить написанные суммы счета от подделки, большинство компьютерных систем документирования чеков используют технику, называемую защита чеков. Чеки, спроектированные для печати компьютером, содержат фиксированное количество пробелов, в которых компьютер может напечатать сумму. Предположим, что платежный чек содержит восемь пробелов, в которых компьютер должен напечатать сумму недельной оплаты. Если сумма большая, заполняются все восемь пробелов, например: 1,230.60 (сумма чека) Напишите программу на С++, которая вводит сумму в виде числа и печатает ее словесный эквивалент. Например, сумма 112.43 должна быть напечатана так: сто ДВЕНАДЦАТЬ и 43/100 5.47. (Азбука Морзе) Возможно, наиболее известной из всех систем кодирования является азбука Морзе, разработанная Самуэлем Морзе в 1832 году для использования в телеграфе. Азбука Морзе обозначает каждую букву алфавита, каждую цифру и несколько специальных символов (таких как точка, запятая, двоеточие и точка с запятой) последовательностью точек и тире. В звукоориентирован-ных системах точка представляется коротким звуком, а тире - длинным. В светооринтированных системах и системах сигнальных флагов используются другие представления. Промежутки между словами указываются пробелами, или совсем просто - отсутствием точки или тире. В звукоориентированных системах пробел представляется коротким периодом времени, в течение которого звук отсутствует. Международная версия азбуки Морзе приведена на рис. 5.39. Напишите программу, которая считывает фразы на английском языке и кодирует их азбукой Морзе. Напишите также программу, которая считывает фразы на языке азбуки Морзе и переводит их в на английский язык. Используйте один пробел между буквами, закодированными азбукой Морзе, и три пробела между закодированными словами.
Рис. 5.39. Буквы алфавита, выраженные международной азбукой Морзе
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |