ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В 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)

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

 

 

51