ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 4) онлайн
Упражнения
Решения к упражнениям, помеченным знаком *, можно найти в приложении Ж. *1. Номер телефона, например (212) 767—8900, можно условно разделить на три части: код города (212), номер телефонной станции (767) и номер абонента (8900). Напишите программу с использованием структуры, поз- воляющую раздельно хранить эти три части телефонного номера. Назо- вите структуру phone. Создайте две структурные переменные типа phone. Инициализацию одной из них произведите сами, а значения для другой запросите с клавиатуры. Затем выведите содержимое обеих переменных на экран. Результат работы программы должен выглядеть приблизитель- но так:
Введите код города, номер станции и номер абонента:
415 555 1212
Мой номер (212) 767-8900
Ваш номер (415) 555-1212
*2. Расположение точки на плоскости можно задать с помощью двух коорди- нат: x и y. Например, если точка имеет координаты (4, 5), то это значит, что она отстоит на 4 единицы справа от вертикальной оси и на 5 единиц вверх
от горизонтальной оси. Сумма двух точек определяется как точка, име- ющая координаты, равные сумме соответствующих координат слагаемых.
Напишите программу, использующую для интерпретации точки на плоско- сти структуру с названием point. Определите три переменные типа point, и две из них инициализируйте с помощью значений, вводимых с клавиа- туры. Затем присвойте третьей переменной значение суммы первых двух переменных и выведите результат на экран. Результат работы программы может выглядеть следующим образом:
Введите координаты точки p1: 3 4 Введите координаты точки p2: 5 7 Координаты точки p1+p2 равны 8.11
*3. Создайте структуру с именем Volume, содержащую три поля типа Distance из примера englstrc, для хранения трех измерений помещения. Определи- те переменную типа Volume, инициализируйте ее, вычислите объем, зани- маемый помещением, и выведите результат на экран. Для подсчета объема переведите каждое из значений типа Distance в значение типа float, равное соответствующей длине в футах и хранимое в отдельной переменной. За- тем для вычисления объема следует перемножить три полученные веще- ственные переменные.
4. Создайте структуру с именем employee, содержащую два поля: номер со- трудника типа int и величину его пособия в долларах типа float. Запроси- те с клавиатуры данные о трех сотрудниках, сохраните их в трех струк- турных переменных типа employee и выведите информацию о каждом из сотрудников на экран.
5. Создайте структуру типа date, содержащую три поля типа int: месяц, день и год. Попросите пользователя ввести день, месяц и год в формате 31/12/2002, сохраните введенное значение в структурной переменной, а за- тем извлеките данные из этой переменной и выведите их на экран в том же формате, в каком они вводились.
6. Как мы говорили, стандартные средства ввода/вывода C++ вместо значе- ний перечисляемых типов данных выводят их внутреннее представление в виде целых чисел. Для того чтобы преодолеть это ограничение, вы мо- жете использовать конструкцию switch, с помощью которой устанавлива- ется соответствие между значением переменной перечисляемого типа и ее внутренним представлением. Пусть, например, в программе определен пе- речисляемый тип данных etype, отражающий должность сотрудника:
enum etype { laborer, secretary, manager, accountant, executive, researcher };
Напишите программу, которая сначала по первой букве должности, введен- ной пользователем, определяет соответствующее значение переменной, по- мещает это значение в переменную типа etype, а затем выводит полностью название должности, первую букву которой ввел пользователь. Взаимодей- ствие программы с пользователем может выглядеть следующим образом:
Введите первую букву должности (laborer, secretary, manager, accountant,
executive, researcher); a
полное название должности: accountant
Возможно, вам понадобится два ветвления switch: одно — для ввода значе- ния, другое — для вывода.
7. Добавьте поля типа enum etype (см. упражнение 6) и struct date (см. упраж- нение 5) в структуру employee из упражнения 4. Организуйте программу таким образом, чтобы пользователь вводил 4 пункта данных о каждом из трех сотрудников: его номер, величину зарплаты, его должность и дату принятия на работу. Программа должна хранить введенные значения в трех переменных типа employee и выводить их содержимое на экран.
8. Вернитесь к упражнению 9 главы 2 «Основы программирования на C++». В этом упражнении требуется написать программу, которая хранит значе- ния двух дробей в виде числителя и знаменателя, а затем складывает эти дроби согласно арифметическому правилу. Измените эту программу так, чтобы значения дробей хранились в структуре fraction, состоящей из двух полей типа int, предназначенных для хранения числителя и знаменателя. Все значения дробей должны храниться в переменных типа fraction.
9. Создайте структуру с именем time. Три ее поля, имеющие тип int, будут называться hours, minutes и seconds. Напишите программу, которая просит пользователя ввести время в формате часы, минуты, секунды. Можно запрашивать на ввод как три значения сразу, так и выводить для каж- дой величины отдельное приглашение. Программа должна хранить время в структурной переменной типа time и выводить количество секунд в вве- денном времени, определяемое следующим образом:
long totalseсs = t1.hours*3600 + t1.minutes*60 + t1.seconds
10. Создайте структуру с именем sterling, хранящую денежные суммы в старой английской системе, описанной в упражнениях 8 и 11 главы 3 «Циклы и ветвления». Поля структуры могут быть названы pounds, shillings и pence и иметь тип int. Программа должна запрашивать у пользователя значение денежной суммы в новых десятичных фунтах (значение должно хранить- ся в переменной типа double), затем переводить эту сумму в старую систе- му, сохранять переведенное значение в переменной типа sterling и выво- дить на экран полученную сумму в фунтах, шиллингах и пенсах.
11. Используя структуру time из упражнения 9, напишите программу, кото- рая получает от пользователя два значения времени в формате 12:59:59, сохраняет их в переменных типа struct time, затем переводит оба значения в секунды, складывает их, переводит сумму в исходный формат, сохраня- ет его в переменной типа time и выводит полученный результат на экран в формате 12:59:59.
12. Переработайте программу-калькулятор для дробей, описанную в упраж- нении 12 главы 3 так, чтобы каждая из дробей хранилась как значение пе- ременной типа struct fraction, по аналогии с упражнением 8 этой главы.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
Схожі підручники
- Лекції з Філософії (частина 1)
- Преодоление духовного материализма (онлайн)
- Економічні функції держави в перехідній економіці
- МЕТОДИЧНІ РЕКОМЕНДАЦІЇ ДО ПРОВЕДЕННЯ СЕМІНАРСЬКИХ ЗАНЯТЬ, ОРГАНІЗАЦІЇ І ПРОВЕДЕННЯ САМОСТІЙНОЇ ТА ІНДИВІДУАЛЬНО-КОНСУЛЬТАЦІЙНОЇ РОБОТИ СТУДЕНТІВ
- Мне тебя обещали (онлайн)
- Методичні вказівки до виконання практичного заняття на тему «Транспортна задача»
