Student.gomel.by
На главную ... Контакты ... Университеты ... Частые вопросы ...
Заказать курсовую в Гомеле ...
Репетитор по информатике ...
Условия ...
Так сколько же стоит?


Заказать лабораторную работу на С++ (Гомель)


ЛАБОРАТОРНАЯ РАБОТА №2. КЛАССЫ

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