Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
1.99 Mб
Скачать

Пример 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;

}

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

  1. Разработать класс Integer для работы с целыми числами. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Кроме этого определить функцию-член, определяющую сумму цифр объекта класса Integer.

  1. Разработать класс Real для работы с вещественными числами. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Кроме этого определить функцию-член, меняющую местами целую и дробную часть объекта класса Real.

  1. Разработать класс Byte для работы с беззнаковыми целыми. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Кроме этого определить функцию-член, выводящую двоичный эквивалент объекта класса Byte.

  1. Разработать класс Word для работы с беззнаковыми целыми. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Кроме этого определить функцию-член, выводящую шестнадцатеричный эквивалент объекта класса Word.

  1. Разработать класс String для работы со строками. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член, которая подсчитывает количество символов объекта класса String.

  1. Разработать класс Date для работы с датами. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член TodayDate(), которая возвращает системную дату объекту класса Date.

  1. Разработать класс Time для работы с временными параметрами. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член TodayTime(), которая возвращает системное время объекту класса Time.

  1. Разработать класс Complex для работы с комплексными числами. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член, меняющую местами вещественную и мнимую часть объекта класса Complex.

  1. Разработать класс Point для работы с объектами типа точка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член, определяющую расстояние между двумя точками.

  1. Разработать класс Line для работы с объектами типа отрезок. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Описать функцию-член, определяющую возможность построения треугольника по трем отрезкам.

  2. Разработать класс String для работы со строками. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Кроме этого определить функцию-член, которая подсчитывает сумму цифр, встречающихся в объекте класса String.

  1. Создать класс IntArray для работы с одномерными массивами целых чисел. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса, определяющему размер массива. Дополнительно определить функцию-член этого класса, которая находит скалярное произведение двух объектов этого класса, имеющих одинаковую размерность.

  1. Создать класс DoubleArray для работы с одномерными массивами вещественных чисел. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса, определяющему размер массива. Дополнительно определить функцию-член этого класса, которая упорядочивает элементы массива по возрастанию.

  1. Разработать класс Rectangle для работы с плоскими прямоугольниками, стороны которого параллельны осям координат. В качестве членов-данных задать координаты двух точек прямоугольника (левую верхнюю точку и нижнюю правую). Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса, задающим координаты двух вершин прямоугольника. Дополнительно определить функцию-член этого класса, которая определяет принадлежность точки с заданными координатами прямоугольнику.

  2. Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, доступ к закрытым членам класса и логическую функцию, определяющую возможность построения треугольника. Дополнительно определить функцию-член этого класса, которая определяет длины радиусов вписанной и описанной окружностей этого треугольника.

  1. Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, доступ к закрытым членам класса и логическую функцию, определяющую возможность построения треугольника. Дополнительно определить функцию-член этого класса, которая вычисляет площадь треугольника.

  1. Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, доступ к закрытым членам класса и логическую функцию, определяющую возможность построения треугольника. Дополнительно определить функцию-член этого класса, которая вычисляет длины всех высот треугольника.

  1. Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, доступ к закрытым членам класса и логическую функцию, определяющую возможность построения треугольника. Дополнительно определить функцию-член этого класса, которая вычисляет длины всех биссектрис треугольника.

  1. Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, доступ к закрытым членам класса и логическую функцию, определяющую возможность построения треугольника. Дополнительно определить функцию-член этого класса, которая вычисляет длины всех медиан треугольника.

  1. Создать класс Circle для работы с плоскими окружностями. В качестве члена данного задается длина радиуса окружности. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену этого класса. Дополнительно определить функцию-член этого класса, вычисляющую площадь круга.

  1. Разработать класс Line для работы с объектами типа отрезок. Члены-данные этого класса определяют координаты концов отрезка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, определяющую длину отрезка.

  1. Разработать класс Line для работы с объектами типа отрезок. Члены-данные этого класса определяют координаты концов отрезка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать логическую функцию-член класса, определяющую параллельность двух отрезков.

  1. Разработать класс Line для работы с объектами типа отрезок. Члены-данные этого класса определяют координаты концов отрезка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать логическую функцию-член класса, определяющую перпендикулярность двух отрезков.

  1. Создать класс Circle для работы с плоскими окружностями. В качестве члена данного задается длина радиуса окружности. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену этого класса. Дополнительно определить функцию-член этого класса, вычисляющую длину окружности.

  1. Создать класс Circle для работы с плоскими окружностями. В качестве члена данного задается длина радиуса окружности. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену этого класса. Дополнительно определить функцию-член этого класса, вычисляющую центральный угол для хорды, длина которой вводится с клавиатуры.

  1. Разработать класс Line для работы с объектами типа отрезок. Члены-данные этого класса определяют координаты концов отрезка на плоскости. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, определяющую координаты середины заданного отрезка.

  1. Разработать класс Polygon для работы с правильными замкнутыми многоугольниками. Члены-данные этого класса определяют число сторон многоугольника и длину стороны. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет площадь многоугольника. Вывести полученное значение на экран дисплея.

  1. Разработать класс Sphere для работы с шаром. Единственный член-данное этого класса определяет радиус шара. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Описать функцию-член класса, которая вычисляет площадь шаровой поверхности.

  1. Разработать класс Sphere для работы с шаром. Единственный член-данное этого класса определяет радиус шара. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытому члену класса. Описать функцию-член класса, которая вычисляет объем шара.

  2. Разработать класс Cylinder для работы с цилиндром. Члены-данные этого класса определяют радиус основания цилиндра и высоту цилиндра. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет объем цилиндра.

  1. Разработать класс Cylinder для работы с цилиндром. Члены-данные этого класса определяют радиус основания цилиндра и высоту цилиндра. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет площадь полной поверхности цилиндра.

  2. Разработать класс Cone для работы с конусом. Члены-данные этого класса определяют радиус основания конуса и высоту конуса. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет объем конуса.

  1. Разработать класс Cone для работы с конусом. Члены-данные этого класса определяют радиус основания конуса и высоту конуса. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет площадь полной поверхности конуса.

  1. Разработать класс Pyramid для работы с правильной пирамидой. Члены-данные этого класса определяют число сторон основания пирамиды, длину одной стороны и высоту пирамиды. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет площадь полной поверхности пирамиды.

  1. Разработать класс Prizm для работы с правильной призмой. Члены-данные этого класса определяют число сторон основания призмы, длину одной стороны и высоту призмы. Определить в этом классе функции-члены, которые обеспечивают ввод/вывод элементов класса, а также доступ к закрытым членам класса. Описать функцию-член класса, которая вычисляет площадь полной поверхности призмы.