|
Программирование >> Структурное программирование
Ь) с) d) (X < 5) && ! (у >= 7) (а == Ь) II ! (д != 5) ( (X <= 8) && (у > 4) ) ( (i > 4) II (j <=6) ) 2.58. Напишите программу, которая напечатает следующий ромб. Вы можете использовать операторы вывода, которые печатают или одну звездочку (*), или один пробел. Максимально используйте повторе- 2.55. (Тройки Пифагора) Прямоугольный треугольник может иметь все стороны, выраженные целыми числами. Множество троек целых значений сторон прямоугольного треугольника называется тройками Пифагора. Эти три стороны должны удовлетворять соотношению, по которому сумма квадратов двух сторон (катетов) равна квадрату третьей стороны (гипотенузы). Найдите все тройки Пифагора, в которых и катеты, и гипотенуза не больше 500. Используйте трижды вложенные циклы for, которые перебирают все возможности. Это пример вычисления в лоб , сводящегося к перебору. Вы узнаете в более продвинутых курсах компьютерных вычислений, что есть много интересных проблем, для которых неизвестно других алгоритмов, кроме решения в лоб . 2.56. Компания платит своим сотрудникам или как менеджерам (которые получают фиксированный недельный оклад), или как почасовым работникам (которые получают фиксированную почасовую оплату за первые 40 рабочих часов и полуторную почасовую ставку за переработку сверх 40 часов), или как работникам на комиссионных началах (которые получают $250 плюс 5.7% от суммы недельных продаж), или как сдельщикам (которые получают фиксированную сумму с каждой выработанной ими единицы продукции - каждый сдельщик в этой компании выпускает только один вид продукции). Напишите программу расчета еженедельной оплаты каждого сотрудника. Вы не знаете заранее числа сотрудников. Каждый тип сотрудника имеет свой код оплаты: менеджеры имеют код 1, почасовые работники - код 2, работающие на комиссионных началах имеют код 3, сдельщики - код 4. Используйте switch, основанный на этих кодах оплаты, для расчета выплат каждому сотруднику. В структуре switch предлагайте пользователю (клерку, составляющему расчетную ведомость) ввести соответствующие данные, необходимые для расчета выплаты сотруднику в соответствии с его кодом оплаты. 2.57. (Законы Моргана) В данной главе мы рассмотрели логические операторы &&, и !. Законы Моргана помогают иногда выразить с их помощью логические выражения в более удобной форме. Эти законы гласят, что выражение выражение! && выражениеЕ) логически эквивалентно выражению (! выражение! \\ ! выражение2). Аналогично выражение \(выражение1 выражение2) эквивалентно выражению (! выражение! && ! выражение2). Используйте законы Моргана для записи выражений, эквивалентных каждому из приведенных ниже, а затем напишите программу, которая показала бы в каждом случае эквивалентность первоначальных и новых выражений: cout << endl; 2.62. Опишите, как в общем случае вы могли бы удалить из цикла оператор continue и заменить его каким-то структурированным эквиваленитом. Используя этот прием, удалите оператор continue из программы на рис. 2.27. 2.63. (Песня Двенадцать дней рождества ) Напишите программу, использующую повторение и структуры switch для печати текста песни Двенадцать дней рождества . Одна структура switch должна использоваться для печати дня ( Первый , Второй и т.д.). Другая структура switch должна использоваться для печати остальной части каждого куплета (нашим читателям, возможно. ние (с вложенными структурами for) и минимизируйте число операторов вывода. * *** ***** ******* ********* ******* ***** *** * 2.59. Модифицируйте программу, которую вы написали в упражнении 2,58, чтобы она читала нечетное число в пределах от 1 до 19, определяющее число строк в ромбе. Ваша программа должна выводить на экран ромб соответствующего размера. 2.60. В адрес операторов break и continue раздается критика по поводу того, что они неструктурны. Действительно, операторы break и continue всегда могут быть заменены структурированными операторами, хотя часто это оказывается неудобным. Опишите, как в общем случае вы могли бы удалить из цикла оператор break и заменить его каким-то структурированным эквиваленитом. (Подсказка. Оператор break осуществляет прерывание цикла в заданном месте его тела. Другим путем выхода из цикла является нарушение условия продолжения цикла. Рассмотрите использование в проверке условия продолжения цикла дополнительной проверки, устанавливающей, что надо досрочно выйти из цикла, потому что выполнено условие его прерывания .) Используя такой прием, удалите оператор break из программы на рис. 2.26. 2.61. Что делает следующий фрагмент программы? for (1=1; i <= 5; i++) { for (j = 1; j <= 3; { for (k = 1; к <= 4; k++) cout *; cout << endl; проще иметь дело с более знакомой им песней того же типа Двенадцать негритят . - Прим. ред.). Упражнение 2.64 относится к разделу 2.22 ( Размышления об объектах ). 2.64. Опишите не более, чем в 200 словах, что такое автомобиль и что он делает. Составьте отдельные списки использованных имен существительных и глаголов. Мы полагаем, что каждое имя существительное соответствует объекту, который необходим для построения системы, в данном случае автомобиля. Выберите пять объектов из вашего списка и для каждого из них составьте список атрибутов и список вариантов поведения. Коротко опишите, как эти объекты взаимодействуют друг с другом и с другими объектами вашего описания. Тем самым вы осуществите несколько важных шагов типичного объектно-ориентированного проектирования.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |