
- •Часть 2
- •Часть 2
- •Лабораторная работа №1 Тема: “Простейшие классы”
- •Основные понятия
- •Пример 1: Класс, описывающий окружность.
- •Пример 2: Класс, описывающий точку.
- •Пример 3: Класс, описывающий двумерный массив.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №2 Тема: “Конструкторы и деструкторы”
- •Пример 1: Класс, описывающий животное.
- •Пример 2: Класс, описывающий время.
- •Пример 3: Класс, описывающий двумерный массив.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №3 Тема: “Перегрузка операций”
- •Пример 1: Класс, описывающий окружность.
- •Пример 2: Класс, описывающий прямоугольник.
- •Пример 3: Класс, описывающий строку символов
- •Задания для самостоятельного выполнения
- •Лабораторная работа №4 Тема: “Классы динамических структур” Пример 1: Класс, описывающий двунаправленный список
- •Пример 2: Класс, описывающий бинарное дерево
- •Задания для самостоятельного выполнения
- •Лабораторная работа №5 Тема: “Шаблонные классы”
- •Пример : Класс, описывающий множество.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №6 Тема: “Наследование”
- •Пример 1: Классы, описывающие точку, окружность и конус.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №7 Тема: “Полиморфизм и виртуальные функции”
- •Пример : Классы, описывающие точки и окружности.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №8 Тема: “Разреженные массивы” Пример: Класс, описывающий разреженный массив
- •Задания для самостоятельного выполнения
- •Лабораторная работа №9 Тема: “Виртуальные функции в динамических структурах” Пример: Класс, описывающий базовый класс списка и производный класс стека
- •Задания для самостоятельного выполнения
- •Лабораторная работа №10 Тема: “Вычисление выражений, вводимых с клавиатуры”
- •Пример: Шаблонный класс для вычисления значения выражения, вводимого с клавиатуры
- •Пошаговое выполнение программы
- •Задание для самостоятельного выполнения
Пример 3: Класс, описывающий двумерный массив.
#include <iostream>
#include <conio.h>
#include <windows.h>
#include <iomanip>
using namespace std;
class DArray
{
int** a; //Указатель для создания двумерного массива
int x,y; // размеры массива
public:
// Функции доступа:
void Set_array(int**,int,int);
int** Get_array();
// Функции ввода-вывода:
void input();
void output();
};
// Определение функций:
/*Функция, которая размещает в памяти массив a и заполняет его данными из массива aa, передаваемого функции как параметр*/
void DArray::Set_array(int** aa, int xx, int yy)
{
x=xx; y=yy; //Копируем размеры массива aa
//Создаем в памяти структуру, которая работает как таблица:
a = new int* [x]; //Создаем массив указателей на строки
for (int i=0; i<x; i++)
a[i]=new int [y]; //выделяем место под строки таблицы
//Заполняем массив данными, копируя элементы из массива aa:
for (int i=0; i<x; i++)
for (int j=0; j<y; j++)
a[i][j]=aa[i][j];
}
// Функция, которая возвращает указатель на массив:
int** DArray::Get_array()
{
return a;
}
// Функция для ввода массива с клавиатуры:
void DArray::input()
{
cout << "Задайте количество строк матрицы ";
cin >> x;
cout << "Задайте количество столбцов матрицы ";
cin >> y;
//Размещение массива в памяти:
a = new int* [x];
for (int i=0; i<x; i++)
a[i]=new int [y];
// Ввод элементов массива:
for (int i=0; i<x; i++)
{
for (int j=0; j<y; j++)
{
cout << "Задайте элемент " << i << "-й строки и " << j <<"-го столбца:";
cin >> a[i][j];
}
cout << endl;
}
}
// Функция для вывода массива на экран:
void DArray::output()
{
for (int i=0; i<x; i++)
{
for (int j=0; j<y; j++)
{
cout << setw(4) << a[i][j];
}
cout << endl;
}
}
//Пример программы, использующей класс DArray:
int main()
{
//Настройки шрифтов и региональных стандартов:
if(SetConsoleCP(1251)==0)
cerr<<"Fialed to set codepage!"<<endl;
if(SetConsoleOutputCP(1251)==0
cerr<<"Failed to set OUTPUT page!"<<endl;
DArray A,B; // Объявление объектов
int** c; //Указатель на массив-источник
/* Создание массива с[2][2], элементы которого равны сумме номера строки и номера столбца */
c = new int* [2];
for (int i=0; i<2; i++)
c[i]=new int [2];
for (int i=0; i<2; i++)
for (int j=0; j<2; j++)
c[i][j]=i+j;
B.Set_array(c,2,2); /*Определяем объект B, копируя элементы из массива-источника */
B.output(); // Вывод массива B на экран
A.input(); // Ввод массива A c клавиатуры
A.output();// Вывод массива А на экран
_getch();
return 0;
}
Задания для самостоятельного выполнения
Разработать класс Integer для работы с целыми числами. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Кроме этого определить функцию-член, определяющую сумму цифр объекта класса Integer.
Разработать класс Real для работы с вещественными числами. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Кроме этого определить функцию-член, меняющую местами целую и дробную часть объекта класса Real.
Разработать класс Byte для работы с беззнаковыми целыми. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Кроме этого определить функцию-член, выводящую двоичный эквивалент объекта класса Byte.
Разработать класс Word для работы с беззнаковыми целыми. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Кроме этого определить функцию-член, выводящую шестнадцатеричный эквивалент объекта класса Word.
Разработать класс String для работы со строками. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член, которая подсчитывает количество символов объекта класса String.
Разработать класс Date для работы с датами. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член TodayDate(), которая возвращает системную дату объекту класса Date.
Разработать класс Time для работы с временными параметрами. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член TodayTime(), которая возвращает системное время объекту класса Time.
Разработать класс Complex для работы с комплексными числами. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член, меняющую местами вещественную и мнимую часть объекта класса Complex.
Разработать класс Point для работы с объектами типа точка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член, определяющую расстояние между двумя точками.
Разработать класс Line для работы с объектами типа отрезок. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Описать функцию-член, определяющую возможность построения треугольника по трем отрезкам.
Разработать класс String для работы со строками. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член, которая подсчитывает сумму цифр, встречающихся в объекте класса String.
Создать класс IntArray для работы с одномерными массивами целых чисел. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса, определяющему размер массива. Дополнительно определить функцию-член этого класса, которая находит скалярное произведение двух объектов этого класса, имеющих одинаковую размерность.
Создать класс DoubleArray для работы с одномерными массивами вещественных чисел. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса, определяющему размер массива. Дополнительно определить функцию-член этого класса, которая упорядочивает элементы массива по возрастанию.
Разработать класс Rectangle для работы с плоскими прямоугольниками, стороны которого параллельны осям координат. В качестве членов-данных задать координаты двух точек прямоугольника (левую верхнюю точку и нижнюю правую). Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса, задающим координаты двух вершин прямоугольника. Дополнительно определить функцию-член этого класса, которая определяет принадлежность точки с заданными координатами прямоугольнику.
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, доступ к закрытым членам класса и логическую функцию, определяющую возможность построения треугольника. Дополнительно определить функцию-член этого класса, которая определяет длины радиусов вписанной и описанной окружностей этого треугольника.
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, доступ к закрытым членам класса и логическую функцию, определяющую возможность построения треугольника. Дополнительно определить функцию-член этого класса, которая вычисляет площадь треугольника.
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, доступ к закрытым членам класса и логическую функцию, определяющую возможность построения треугольника. Дополнительно определить функцию-член этого класса, которая вычисляет длины всех высот треугольника.
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, доступ к закрытым членам класса и логическую функцию, определяющую возможность построения треугольника. Дополнительно определить функцию-член этого класса, которая вычисляет длины всех биссектрис треугольника.
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, доступ к закрытым членам класса и логическую функцию, определяющую возможность построения треугольника. Дополнительно определить функцию-член этого класса, которая вычисляет длины всех медиан треугольника.
Создать класс Circle для работы с плоскими окружностями. В качестве члена данного задается длина радиуса окружности. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену этого класса. Дополнительно определить функцию-член этого класса, вычисляющую площадь круга.
Разработать класс Line для работы с объектами типа отрезок. Члены-данные этого класса определяют координаты концов отрезка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, определяющую длину отрезка.
Разработать класс Line для работы с объектами типа отрезок. Члены-данные этого класса определяют координаты концов отрезка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать логическую функцию-член класса, определяющую параллельность двух отрезков.
Разработать класс Line для работы с объектами типа отрезок. Члены-данные этого класса определяют координаты концов отрезка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать логическую функцию-член класса, определяющую перпендикулярность двух отрезков.
Создать класс Circle для работы с плоскими окружностями. В качестве члена данного задается длина радиуса окружности. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену этого класса. Дополнительно определить функцию-член этого класса, вычисляющую длину окружности.
Создать класс Circle для работы с плоскими окружностями. В качестве члена данного задается длина радиуса окружности. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену этого класса. Дополнительно определить функцию-член этого класса, вычисляющую центральный угол для хорды, длина которой вводится с клавиатуры.
Разработать класс Line для работы с объектами типа отрезок. Члены-данные этого класса определяют координаты концов отрезка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, определяющую координаты середины заданного отрезка.
Разработать класс Polygon для работы с правильными замкнутыми многоугольниками. Члены-данные этого класса определяют число сторон многоугольника и длину стороны. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет площадь многоугольника. Вывести полученное значение на экран дисплея.
Разработать класс Sphere для работы с шаром. Единственный член-данное этого класса определяет радиус шара. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Описать функцию-член класса, которая вычисляет площадь шаровой поверхности.
Разработать класс Sphere для работы с шаром. Единственный член-данное этого класса определяет радиус шара. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Описать функцию-член класса, которая вычисляет объем шара.
Разработать класс Cylinder для работы с цилиндром. Члены-данные этого класса определяют радиус основания цилиндра и высоту цилиндра. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет объем цилиндра.
Разработать класс Cylinder для работы с цилиндром. Члены-данные этого класса определяют радиус основания цилиндра и высоту цилиндра. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет площадь полной поверхности цилиндра.
Разработать класс Cone для работы с конусом. Члены-данные этого класса определяют радиус основания конуса и высоту конуса. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет объем конуса.
Разработать класс Cone для работы с конусом. Члены-данные этого класса определяют радиус основания конуса и высоту конуса. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет площадь полной поверхности конуса.
Разработать класс Pyramid для работы с правильной пирамидой. Члены-данные этого класса определяют число сторон основания пирамиды, длину одной стороны и высоту пирамиды. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет площадь полной поверхности пирамиды.
Разработать класс Prizm для работы с правильной призмой. Члены-данные этого класса определяют число сторон основания призмы, длину одной стороны и высоту призмы. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет площадь полной поверхности призмы.