Заказать лабораторную работу на С++ (Гомель)
ЛАБОРАТОРНАЯ РАБОТА №3. ОБЪЕКТЫ КЛАССОВ
1) Определите класс Date для хранения даты:
class Date
{
unsigned y; //год
unsigned m; //месяц
unsigned d; //день
...
};
Определите элементы-функции, которые читают дату из потока ввода, выводят дату. Определите функцию (с параметрами по умолчанию), которая добавляет день, месяц или год к дате. Определите дружественную функцию, которая вычисляет разницу в днях между двумя датами.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования.
2) Определите класс Time для хранения времени:
class Time
{
unsigned h; //часы
unsigned m; //минуты
unsigned s; //секунды
...
};
Определите элементы-функции, которые читают время из потока ввода, выводят время. Определите функцию (с параметрами по умолчанию), которая добавляет часы, минуты или секунды ко времени. Определите дружественную функцию, которая возвращает количество секунд прошедших от time1 до time2.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования.
3) Определить класс TextFile для представления текстовых файлов
class TextFile
{
char name[256]; //имя файла
int length; //размер файла
char * buff; //буфер для текста
...
};
Определите в классе следующие функции:
Open() – открытие файла. Функция должна создать буфер и прочитать в него содержимое файла;
AddText() – добавление текста в конец файла;
PasteText() – вставка текста в произвольное место;
Save() – сохранение файла. Функция должна иметь параметр – имя файла со значением по умолчанию NULL. Если используется значение по умолчанию, то файл сохраняется с именем, которое было указано при его открытии;
Print() – вывод содержимого файла на экран.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования. Определить деструктор.
4) Определите узел бинарного дерева следующим образом:
class Node
{
char name[10]; //имя узла
Node * left; //левая ветвь
Node * right; //правая ветвь
...
};
Определите в классе следующие функции:
Init() – инициализация узла. Функция должна установить указатели на левый и правый узел в ноль;
AddNode() – добавление узла в левую или правую ветви. Если слева нет узла, то добавить слева, если справа нет узла, то добавить справа, иначе ничего не добавлять;
DelTree() – удаление поддеревьев;
Print() – рекурсивная функция вывода дерева на экран.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования. Определить деструктор.
5) Определите элемент односвязного списка и список:
struct ListItem
{
char * data; //указатель на данные
List * next; //указатель на следующий элемент
};
class List
{
ListItem * list;
...
};
Определите в классе List следующие функции:
Init() – инициализация списка. Установка list в ноль;
Add() – добавление нового элемента в начало или конец списка (предусмотреть обе возможности);
Add() – перегруженная функция добавления нового элемента в позицию с индексом i;
Print() – вывод содержимого списка на экран;
Delete() – удаление i-го элемента из списка.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования. Определить деструктор.
6) Имеется элемент стека (дисциплина обслуживания LIFO) и стек:
struct StackItem
{
char * data; //указатель на данные
Stack * prev; //указатель на предыдущий элемент
};
class Stack
{
StackItem * stack;
...
};
Определите в классе Stack следующие функции:
Init() – инициализация стека. Установка stack в ноль;
Push() – поместить данные в стек;
Pop() – извлечь данные из стека (при этом элемент удаляется из стека);
Print() – дружественная функция вывода на экран содержимого стека.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования. Определить деструктор.
7) Определите класс String для хранения строки символов:
class String
{
char * str; //строка
int length; //длина строки
...
};
Определите в классе следующие функции:
Init() – инициализация некоторой строкой;
Concat() – добавление в конец строки другой строки;
Length() – определение длины строки;
Char() – функция, возвращающая символ с индексом i;
Print() – дружественная функция вывода строки на экран.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования. Определить деструктор.
8) Имеется элемент очереди и очередь (дисциплина обслуживания FIFO):
struct QueueItem
{
char * data; //указатель на данные
QueueItem * next; //указатель на следующий элемент очереди
}
class Queue
{
QueueItem * queue;
...
};
Определите в классе Queue следующие функции:
Init() – инициализация очереди. Установка queue в ноль;
Put() – поместить элемент в конец очереди;
Get() – извлечь элемент из очереди (при этом элемент удаляется из очереди);
Print() – статическая функция вывода на экран содержимого очереди.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования. Определить деструктор.
9) Определите класс Complex:
class Complex
{
double re; //вещественная часть
double im; //мнимая часть
...
};
Определите в классе следующие функции:
Init() – инициализация числа (установка значений действительной и мнимой части);
Add(), Sub(), Mul(), Div() – операции «+», «–», «*» и «/» над комплексными числами. Все функции должны возвращать ссылку на новое комплексное число, содержащее результат операции;
Print() – статическая функция вывода значения комплексного числа на экран в алгебраической или показательной формах.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования.
10) Определите класс TreeNode – узел:
class TreeNode
{
char name[10]; //имя узла
TreeNode * nodes; //список дочерних узлов
TreeNode * next; //следующий узел на том же уровне
...
};
Определите в классе следующие функции:
Init() – инициализация узла. Установка nodes и next в ноль;
AddNode() – добавление нового узла на том же уровне;
AddChildNode() – добавление нового дочернего узла;
DelTree() – статическая функция удаление всего дерева или его части;
Print() – дружественная функция вывода дерева (имен узлов) на экран.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования. Определить деструктор.
11) Определите структуру Pair – пара «имя = значение» и класс Pairs – массив пар:
struct Pair
{
char name[21]; //имя
int value; //значение
};
class Pairs
{
Pair * prs; //массив пар
int length; //размер массива
int count; //количество имеющихся пар в массиве
...
};
Определите в классе Pairs следующие функции:
Init() – инициализация массива пар (функция получает начальный размер массива и создает массив);
GetValue() – получить значение для заданного имени (функция должна возвратить 0 если нет такого имени и 1 в случае успеха, а значение возвращается через параметр функции, передаваемый по ссылке или указателю);
SetValue() – установить значение для заданного имени (если такого имени в массиве нет, то добавить в массив новую пару);
Print() – дружественная функция вывода всех пар на экран.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования. Определить деструктор.
12) Определите класс Array – одномерный массив вещественных чисел:
class Array
{
double * arr; //непосредственно массив
unsigned size; //размер массива
...
};
Определите в классе следующие функции:
Init() – создание нового массива, размер которого передается в качестве параметра;
DelArray() – освобождение памяти занятой массивом;
Set() – установить новое значение i-го элемента массива;
Get() – получить значение i-го элемента массива;
Print() – дружественная функция вывода элементов массива на экран.
Определить в классе конструкторы: по умолчанию, с параметрами, копирования. Определить деструктор.
|
|
ЛАБОРАТОРНАЯ РАБОТА №1. ПЕРЕХОД ОТ ЯЗЫКА С К ЯЗЫКУ С++
ЛАБОРАТОРНАЯ РАБОТА №2. КЛАССЫ
ЛАБОРАТОРНАЯ РАБОТА №3. ОБЪЕКТЫ КЛАССОВ
ЛАБОРАТОРНАЯ РАБОТА №4. ПЕРЕОПРЕДЕЛЕНИЕ ОПЕРАТОРОВ
ЛАБОРАТОРНАЯ РАБОТА №5. ПРОИЗВОДНЫЕ КЛАССЫ И ИЕРАРХИИ КЛАССОВ
ЛАБОРАТОРНАЯ РАБОТА №6. ШАБЛОНЫ
ЛАБОРАТОРНАЯ РАБОТА №7. ОБРАБОТКА ИСКЛЮЧЕНИЙ
ЛАБОРАТОРНАЯ РАБОТА №8. ДИНАМИЧЕСКАЯ ИДЕНТИФИКАЦИЯ И ПРИВЕДЕНИЕ ТИПА
Вы на сайте:
Student.Gomel.by
|