ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 3) онлайн
Упражнения
Решения к упражнениям, помеченным знаком *, можно найти в приложении Ж. *1. Предположим, вы хотите создать таблицу умножения на заданное число. Напишите программу, которая позволяет пользователю ввести это число, а затем генерирует таблицу размером 20 строк на 10 столбцов. Первые строки результата работы программы должны выглядеть примерно сле- дующим образом:
Введите число: 7 7142128354249566370 77849198105112119126133140 147154161168175182189196203210
*2. Напишите программу, предлагающую пользователю осуществить перевод температуры из шкалы Цельсия в шкалу Фаренгейта или наоборот, а затем осуществите преобразование. Используйте в программе переменные веще- ственного типа. Взаимодействие программы с пользователем может вы- глядеть следующим образом:
Нажмите 1 для перевода шкалы Цельсия в шкалу Фаренгейта, 2 для перевода шкалы Фаренгейта в шкалу Цельсия: 2 Введите температуру по Фаренгейту: 70 Значение по Цельсию: 21.111111
*3. Операции ввода, такие, как cin, должны уметь преобразовывать последо- вательность символов в число. Напишите программу, которая позволяет пользователю ввести шесть цифр, а затем выводит результат типа long на экране. Каждая цифра должна считываться отдельно при помощи функ- ции getche(). Вычисление значения переменной производится путем ум-
ножения текущего ее значения на 10 и сложения с последней введенной цифрой (для того, чтобы из кода символа получить цифру, вычтите из не- го 48 или '0'). Примером результата работы программы может служить следующий:
Введите число: 123456 Вы ввели число 123456
*4. Создайте эквивалент калькулятора, выполняющего четыре основных ариф- метических операции. Программа должна запрашивать ввод пользовате- лем первого операнда, знака операции и второго операнда. Для хранения операндов следует использовать переменные вещественного типа. Выбрать операцию можно при помощи оператора switch. В конце программа долж- на отображать результат на экране. Результат работы программы с поль- зователем может выглядеть следующим образом:
Введите первый операнд, операцию и второй операнд: 10 / 3
Результат равен 3.333333
Выполнить еще одну операцию (y/n)? y
Введите первый операнд, операцию и второй операнд: 12 + 100
Результат равен 112
Выполнить еще одну операцию (y/n)? n
5. При помощи цикла for изобразите на экране пирамиду из символов 'X'. Верхняя часть пирамиды должна выглядеть следующим образом:
х
ххх
ххххх ххххххх ххххххххх
Вся пирамида должна быть высотой не 5 линий, как изображено здесь, а 20 линий. Одним из способов ее построения может служить использова- ние двух вложенных циклов, из которых внутренний будет заниматься печатанием символов 'X' и пробелов, а другой осуществлять переход на одну строку вниз.
6. Измените программу factor, приведенную в этой главе, таким образом, чтобы она циклически запрашивала ввод пользователем числа и вычисля- ла его факториал, пока пользователь не введет 0. В этом случае програм- ма должна завершиться. При необходимости вы можете использовать со- ответствующие операторы программы factor в цикле do или while.
7. Напишите программу, рассчитывающую сумму денег, которые вы получи- те при вложении начальной суммы с фиксированной процентной ставкой дохода через определенное количество лет. Пользователь должен вводить с клавиатуры начальный вклад, число лет и процентную ставку. Приме- ром результата работы программы может быть следующий:
Введите начальный вклад: 3000
Введите число лет: 10
Введите процентную ставку: 5.5
Через 10 лет вы получите 5124.43 доллара.
В конце первого года вы получите 3 000 + (3 000*0.055) = 3165 долларов. В конце следующего года вы получите 3 165 + (3 165*0.055) = 3339.08 дол- ларов. Подобные вычисления удобно производить с помощью цикла for.
8. Напишите программу, которая циклически будет запрашивать ввод поль- зователем двух денежных сумм, выраженных в фунтах, шиллингах и пен- сах (см. упражнения 10 и 12 главы 2). Программа должна складывать введенные суммы и выводить на экран результат, также выраженный в фунтах, шиллингах и пенсах. После каждой итерации программа должна спрашивать пользователя, желает ли он продолжать работу программы. При этом рекомендуется использовать цикл do. Естественной формой взаимодействия программы с пользователем была бы следующая:
Введите первую сумму £5 10 6 Введите первую сумму £3 2 6 Всего £8 13 0 Продолжить(y/n) ?
Для того чтобы сложить две суммы, вам необходимо учесть заем одного шиллинга в том случае, если число пенсов окажется больше 11, и одного фунта, если число шиллингов окажется больше 19.
9. Представьте, что вы собираетесь пригласить к себе шестерых гостей, но за вашим столом могут разместиться всего лишь 4 человека Сколькими способами можно разместить четырех из шести гостей за обеденным сто- лом? Каждый из шести гостей может разместиться на первом стуле. Каж- дый из оставшихся пяти гостей может занять второй стул. На третьем стуле может разместиться один их четырех гостей, и на четвертом — один из трех оставшихся гостей. Двоим из гостей не достанется ни одного места. Таким образом, число возможных рассадок гостей за столом равно 6*5*4*3 = 360. Напишите программу, которая будет производить аналогич- ные вычисления для любого числа гостей и любого числа мест за столом (при этом предполагается, что число гостей не меньше числа мест). Про- грамма не должна быть сложной, и вычисление можно организовать с по- мощью простого цикла for.
10. Модифицируйте программу, описанную в упражнении 7, так, чтобы вме- сто вычисления текущей суммы на вашем счете она вычисляла, сколько лет потребуется для того, чтобы при заданной процентной ставке и вели- чине начального вклада сумма на вашем счете достигла запрашиваемого вами значения. Для хранения найденного числа лет используйте перемен- ную целого типа (можно отбросить дробную часть значения, полученного в результате расчета). Самостоятельно выберите тип цикла, подходящий для решения задачи.
11. Создайте калькулятор, выполняющий действия над денежными суммами, выраженными в фунтах, шиллингах и пенсах (см. упражнения 10 и 12 главы 2). Калькулятор должен складывать и вычитать вводимые значе- ния, а также производить умножение денежной суммы на вещественное число (операция умножения двух денежных сумм не имеет смысла, по-
скольку квадратных денежных единиц не существует. Деление одной де- нежной суммы на другую мы тоже не будем рассматривать). Организация взаимодействия с калькулятором описана в упражнении 4 этой главы.
12. Создайте калькулятор, выполняющий четыре арифметических действия над дробями (см. упражнение 9 главы 2 и упражнение 4 этой главы). Формулы, демонстрирующие выполнение арифметических операций над дробями, приведены ниже.
Сложение: a/b + c/d = (a*d + b*c)/(b*d) Вычитание: a/b - c/d = (a*d - b*c)/(b*d) Умножение: a/b*c/d = (a*c)/(b*d) Деление: a/b/c/d = (a*d)/(b*c)
Пользователь должен сначала ввести первый операнд, затем знак опера- ции и второй операнд. После вычисления результата программа должна отобразить его на экране и запросить пользователя о его желании произ- вести еще одну операцию.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
