1. Геометрические фигуры должны быть созданы через координаты точек. Например координаты прямоугольника в котором они лежат.
2. Необходимо использовать объект структуры или класса Point ( Точка).
Class Point
{ double x, y, z;
Public:
Point(x=x1; y1=0; z1=0) { x=x1; y=y1; z=z1;}
…
}
2. В классах для фигур с вырезом в конструкторе предусмотреть проверку корректности данных.
3. Примеры иерархии классов:
TObject (абстр. Класс): Геометрическая фигура (абстр. класс): Круг
4. Пример определения добавленного абстрактного класса
class TObject
{
public:
virtual void Show()=0;
};
5. Абстрактный класс для геометрической фигуры
class TGraph:TObject
{
Point z1,z2;
public:
virtual void perimetr()=0;
virtual void square()=0;
virtual void draw()=0;
}
Лабораторная работа №6
«Программирование с использованием перегрузки операций и шаблонов классов»
Цель: Получить практические навыки перегрузки операций в языке С++. Получить практические навыки создания шаблонов и использования их в программах С++.
I. Краткие теоретические сведения
I. Постановка задачи
1. Выбрать класс в соответствии с вариантом. Дополнить определение класса заданными перегруженными операциями в соответствии с вариантом. Реализовать эти операции. Выполнить тестирование.
2. Создать шаблон группы объектов. Определить и реализовать методы для вычисления суммы, среднего значения, максимального и минимального значения, а также сортировки. Реализовать эти операции для объекта, выбранного класса. Выполнить тестирование.
3. Выполнить то же самое для шаблона список.
II. Варианты
№
|
Класс
|
1
|
интервал даты (год, месяц, день)
|
2
|
интервал времени (час, минута, секунда)
|
3
|
деньги (величина, единица, курс по отношению к доллару)
|
4
|
угол (градус, минута, секунда)
|
5
|
Память компьютера (мегабайт, килобайт, байт)
|
6
|
комплексное число в алгебраической форме
|
7
|
комплексное число в тригонометрической форме
|
8
|
комплексное число в экспоненциальной форме
|
9
|
рациональное число-дробь
|
10
|
десятичное число с фиксированной точкой
|
11
|
n мерный вектор
|
12
|
вычет по простому модулю p
|
13
|
квадратная вещественная матрица размером 2x2
|
14
|
конденсатор (C – ёмкость, Umax – максимальное допустимое напряжение).
|
15
|
проводник (R – сопротивление, Umax – максимальное допустимое напряжение).
|
16
|
квадратная вещественная матрица размером nxn
|
17
|
n мерный битовый вектор
|
18
|
трехмерный вектор в полярных координатах
|
19
|
множество строк
|
20
|
множество чисел
|
III. Содержание отчета
1. Титульный лист: название дисциплины; номер и наименование работы; фамилия, имя, отчество студента; дата выполнения.
2. Конкретное задание с указанием номера варианта, реализуемого класса и операций.
3. Определение класса.
4. Обоснование включения в класс нескольких конструкторов, деструктора и операции присваивания.
5. Объяснить выбранное представление памяти для объектов реализуемого класса.
6. Реализация перегруженных операций с обоснованием выбранного способа (функция член класса, внешняя функция, внешняя дружественная функция).
7. Тестовые данные и результаты тестирования.
IV. Методические указания
1. В классе реализовать перегрузку следующих операций:
бинарные операции;
унарные операции(++ и --);
операции отношения.
2. Для вода и вывода определить в классе функции input и print.
3. Чтобы не возникало проблем, необходимо аккуратно работать с константными объектами. Например:
конструктор копирования следует определить так:
MyTmp (const MyTmp& ob);
операцию присваивания перегрузить так:
MyTmp& operator = (const MyTmp& ob);
4. Тестирование должно быть выполнено для всех типов данных и для всех операций.
5. Реализация шаблона класса array для работы с объектами классов с перегруженными операциями.
template class array
{
T *data;
int size;
public:
array(int k) {size =k; data = new T[size]};
T& operator[](int i){return data[i];}
int size() { return size; }
~array () { delete []data; }
float max_element ()
void input_array();
void show_array ();
};
template float array:: max_element ()
// находит максимальный элемент для массива типа float
{
float max=data[0];
for ( i=1; i
if (a[i]>max) max=data[i];
return max;
}
template void array:: input_array()
{
for (int i = 0; i < index; i++) {cin>>data[i] ; cout << ' ';}
}
template void array:: show_array()
{
for (int i = 0; i < index; i++) cout << data[i] << ' ';
}
Лабораторная работа №7
«Программирование с использованием потоковых классов»
Цель: Научиться программировать ввод и вывод в С++ используя объекты потоковых классов стандартной библиотеки С++.
I. Постановка задачи
1. Сформировать массив элементов заданной в варианте структуры. Написать функцию для сохранения массива в файле. Использовать в программе.
2. Написать функцию и реализовать в программе для чтения из файла, формирования и вывода массива структурного типа.
3. Написать функцию и реализовать в программе для корректировки (т.е. замены) записей в файл на основе выбранного критерия для структуры указанного в варианте. Выполнить программу и просмотреть полученный файл.
II. Варианты
№
|
Класс
|
1
|
Абитуриент (имя, год рождения, набранный балл, средний балл)
|
2
|
Сотрудник (имя, должность, год рождения, заработная плата)
|
3
|
Страна (название, столица, численность населения, площадь)
|
4
|
Государство (название, язык, денежная единица, курс валюты)
|
5
|
Человек (имя, домашний адрес, номер телефона, возраст)
|
6
|
Паспорт (имя, номер, дата выдачи, кем выдано)
|
7
|
Школьник (имя, класс, номер телефона, возраст)
|
8
|
Студент (имя, домашний адрес, группа, рейтинг)
|
9
|
Группа (номер, курс, факультет, количество студентов)
|
10
|
Самолёт (марка, вместимость, компания, страна)
|
11
|
Покупатель (имя, адрес, телефона номер кредитной карточки)
|
12
|
Пациент (имя, адрес, номер карты, номер страхового полиса)
|
13
|
Информация (носитель, объем, название, автор)
|
14
|
Видеокассета (название режиссер, продолжительность, цена)
|
15
|
Музыкальный диск ( название, автор, продолжительность, цена)
|
16
|
Спортивная команда (название, город, количество игроков, очки)
|
17
|
Театр (название, адрес, вместимость, вид театрального искусства)
|
18
|
Стадион (название, город, год постройки, количество площадок)
|
19
|
Автомобиль (марка, номер, цена, год выпуска)
|
20
|
Костюм (размер, страна, цена, цвет)
|
III. Содержание отчета
Титульный лист: название дисциплины, номер и наименование работы, фамилия, имя, отчество студента, дата выполнения..
Описание используемых типов данных.
Текст функций для:
формирования файла,
печати файла,
добавления записи в файл,
удаления записи из файла
поиска структуры для удаления.
Программа решения задания.
Результаты работы программы.
Объяснение результатов.
IV. Методические указания
Для заполнения файла можно использовать функцию, формирующую одну структуру, указанного в варианте типа. Значения элементов структуры вводятся с клавиатуры. Для ввода можно использовать операцию >> и функцию gets().
При вводе структур можно реализовать один из следующих механизмов:
ввод заранее выбранного количества структур (не менее 5);
ввод до появления структуры с заданным количеством признаков;
диалог с пользователем о необходимости продолжать ввод.
Для записи структуры в файл и чтения структуры из файла использовать функции ввода/вывода read и write. Пример вывода в файл:
Student x={“Иванов”, 20, 4);
ofstream emp_file("EMPLOYEE.DAT") ;
emp_file.write((char *) &x, sizeof(student));
Пример ввода из файла:
ifstream emp_file("EMPLOYEE.DAT");
emp_file.read((char *) &worker, sizeof(employee));
Для удаления/ добавления элементов в файл использовать вспомогательный файл.
Предусмотреть в программе вывод сообщения о количестве сохраненных объектов и о длине полученного файла в байтах.
Лабораторная работа №8
«Программирование с использованием исключительных ситуаций»
Цель: Научиться управлять исключительными ситуациями.
I. Постановка задачи
1. Написать программу для обработки исключительных ситуаций при вычислении выражений. Реализовать функции для вычислений с учетом исключительных ситуаций. Выполнить тестирование программы.
2. Разработать класс для указанной фигуры. В классе предусмотреть различные исключительные ситуации, которые могут, возникнут во время игры.
3. С помощью класса решит следующую задачу. Во входном файле дан список ходов. Проверить правильность записи.
II. Варианты
№
|
выражение
|
фигура
|
1
|
n+++m m-- >n
|
белая шашка
|
2
|
++n*++m m++ |
белая пешка
|
3
|
n---m m-- |
белая ладья
|
4
|
n++*m n++ |
белый конь
|
5
|
- -m-++n m*n |
белый слон
|
6
|
m-++n ++m>--n
|
белый король
|
7
|
m+--n m++<++n
|
белый ферзь
|
8
|
n++-m m-- >n
|
черная пешка
|
9
|
++n*++m m++ |
черная ладья
|
10
|
n---m m-- |
черный конь
|
11
|
n++*m n++ |
черный слон
|
12
|
- -m-++n m*n |
черный король
|
13
|
m-++n ++m>--n
|
черный ферзь
|
14
|
m+--n m++<++n
|
белая пешка
|
15
|
n++-m m-- >n
|
белая ладья
|
16
|
++n*++m m++ |
белый конь
|
17
|
n---m m-- |
белый слон
|
18
|
n++*m n++ |
белый король
|
19
|
- -m-++n m*n |
белый ферзь
|
20
|
m-++n ++m>--n
|
черная пешка
|
Do'stlaringiz bilan baham: |