Лабораторная работа № 16. Перегрузка операций и дружественные функции 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа № 16. Перегрузка операций и дружественные функции



Цель работы:

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

Изучить:

- организацию данных типа класс;

- приемы реализации задач с использованием классов;

- перегрузка опрераторов;

- использование дружественных функций.

 

Контрольные вопросы

1. Равносильны ли определения класса служебными словами class, struct И union?

2. Как реализуется инкапсуляция в языке С++?

3. Может ли один экземпляр класса обратиться к закрытому члену другого экземпляра того же класса?

4. Может ли в классе быть несколько конструкторов?

5. Может ли в классе быть несколько деструкторов?

6. Что такое "друзья" класса?

Задание на самостоятельное выполнение

 

1. Вектор в n-м евклидовом пространстве задается своими координатами. Реализовать:

а) сложение (вычитание) векторов;

б) скалярное произведение векторов;

в) векторное произведение векторов (операция %);

г) умножение вектора на скаляр.

2.Строка символов. Реализовать операции:

сравнения строк (операция ==);

удаления из строки указанного символа (операция -);

переворота строки (операция ~),

Кроме того, членом класса сделать также функцию с именем strset() для удаления из первой строки всех символов, встречающихся во второй строке.

3. В британском формате дата задается как число/месяц/год. Реализовать с учётом високосных годов:

а) сложение даты и определенного пользователем количества дней;

б) вычитание из даты определенного пользователем количества дней,

в) вычислeниe числа дней, прошедших между двумя датами (оп. %).

4. Ввести класс для работы с прямоугольной матрицей. Реализовать следующие операции:

а) сложение (вычитание) двух матриц (операции +, -);

б) умножение двух матриц (операция *).

5. Комплексное число задается своиммодулем иуглом (например, число 10* (соs(p / 6) + i * sin(p / 6)) зада­ется парой (10, p / 6).

Реализовать:

а) сложение (вычитание) чисел;

б) произведение двух чисел;

в) деление чисел;

г) возведение в целочисленную степень (оператор ^);

д) извлечение квадратного корня (функция sqrt()).

6. Комплексное число задается своей веществен­ной и мнимой частями (например, 5+3i).

Реализовать:

а) сложение (вычитание) чисел (операции +, -);

б) произведение двух чисел (операция *);

в) деление чисел (операция /);

г) возведение в целочисленную степень (оператор ^);

д) извлечение квадратного корня (функция sqrt())

7. Время задается в формате час.минута.секунда, Реализовать следующие операции (учесть переход через 24ч ):

а) сложение времени и определенногопользователемколичества секунд;

б) вычитание из времени указанного пользователем ко­личества секунд;

в) сложение двух моментов времени;

г) вычитание из одного момента времени другого;

д) подсчет числа секунд между двумя моментами време­ни, лежащими в пределах одних суток (оператор %).

8. Ввести класс для работы с объектом "полином". Реализовать следующие операции:

а) сложение (вычитание) двух полиномов;

б) умножение (деление) двух полиномов;

в) умножение полинома на число (операция &);

г) вычисление значения полинома в заданнойточке Х(операция ());

д) дифференцирование полинома (операция ~);

е) интегрирование полинома (операция!).

9. Ввести класс для работы с объектом "мно­жество целых чисел". Реализовать следующие операции:

а) объединение двух множеств (операция +);

б) пересечение двух множеств (операция &);

в) разность двух множеств (операция -);

г) добавление элемента во множество;

д) удаление элемента из множества.

10. Ввести класс для работы с объектом "рацио­нальная дробь" (вида т/п). Реализовать:

а) сложение/вычитание двух дробей;

б) умножение/деление двух дробей;

в) приведение дроби к несократимому виду (операция!);

г) вывод дроби в виде т/п (операция <<);

д) сравнения двух дробей (операция ||).

 

В заданиях 11 – 20 перегрузить операции ввода и вывода исходных данных.

1. Описать класс с именем STUDENT, содержащий следующие поля: фамилия и инициалы;номер группы; успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия: а) ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию номера группы; б) вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0;

2. Описать класс с именем STUDENT, содержащий следующие поля: фамилия и инициалы; номер группы; и успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия. а) ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены но возрастанию среднего балла; б) вывод па дисплей фамилий и номеров групп для всех студентов, имеющих оценки 4 и 5.

3. Описать класс с именем STUDENT, содержащий следующие поля: фамилия и инициалы; номер группы; успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия: а) ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по алфавиту; б) вывод на дисплей фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2;

4. Описать класс с именем AEROFLOT, содержащий следующие поля: название пункта назначения рейса; номер рейса; тип самолета. Написать программу, выполняющую следующие действия: а)ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT; записи должны быть упорядочены по возрастанию номера рейса; б) вывод на экран номеров рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры;

5. Описать класс с именем AEROFLOT, содержащий следующие поля: название пункта назначения рейса; номер рейса; тип самолета. Написать программу, выполняющую следующие действия: а) ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT; записи должны быть размещены в алфавитном порядке но названиям пунктов назначения; б) вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры;

6. Описать класс с именем WORKER, содержащий следующие поля: фамилия и инициалы работника; название занимаемой должности; год поступления на работу. Написать программу, выполняющую следующие действия: а) ввод с клавиатуры данных в массив, состоящий из десяти структур типа WORKER; записи должны быть размещены по алфавиту; б) вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры;

7. Описать класс с именем TRAIN, содержащий следующие поля: название пункта назначения; номер поезда; время отправления. Написать программу, выполняющую следующие действия: а) ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения; б) вывод на экран информации о поездах, отправляющихся после введенного с клавиатуры времени;

8. Описать класс с именем TRAIN, содержащий следующие поля: название пункта назначения; номер поезда; время отправления. Написать программу, выполняющую следующие действия: а) ввод с клавиатуры данных в массив, состоящий из шести элементов типа TRAIN; записи должны быть упорядочены по времени отправления поезда; б) вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры;

9. Описать класс с именем TRAIN, содержащий следующие поля: название пункта назначения; номер поезда; время отправления. Написать программу, выполняющую следующие действия: а)ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи должны быть упорядочены по номерам поездов; б) вывод на экран информации о поезде, номер которого введен с клавиатуры;

10. Описать класс с именем MARSH, содержащий следующие поля: название начального пункта маршрута; название конечного пункта маршрута; номер маршрута. Написать программу, выполняющую следующие действия: а) ввод с клавиатуры данных в массив, состоящий из восьми элементов типа MARSH; записи должны быть упорядочены по номерам маршрутов; б) вывод на экран информации о маршруте, номер которого введен с клавиатуры;

 

Содержание отчета

1. Титульный лист.

2. Наименование и цель работы.

3. Краткое теоретическое описание.

4. Задание на лабораторную работу.

5. Схема алгоритма.

6. Листинг программы.

7. Результаты выполнения программы.



Поделиться:


Последнее изменение этой страницы: 2016-12-11; просмотров: 388; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.145.114 (0.012 с.)