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


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


ЛАБОРАТОРНАЯ РАБОТА №1. ПЕРЕХОД ОТ ЯЗЫКА С К ЯЗЫКУ С++

1) Определите структуру Date для хранения даты:


struct Date
{
unsigned y; //год
unsigned m; //месяц
unsigned d; //день
};

Определите функции, которые читают дату из потока ввода, выводят дату. Определите функцию (с параметрами по умолчанию), которая добавляет день, месяц или год к дате. Определите функцию, которая вычисляет разницу в днях между двумя датами.

2) Определите структуру Time для хранения времени:


struct Time
{
unsigned h; //часы
unsigned m; //минуты
unsigned s; //секунды
};

Определите функции, которые читают время из потока ввода, выводят время. Определите функцию (с параметрами по умолчанию), которая добавляет часы, минуты или секунды ко времени. Определите функцию, которая возвращает количество секунд прошедших от time1 до time2.

3) Определите функцию MyPrintf(), получающую printf-подобную строку форматирования, которая может содержать директивы: %c (символ), %s (строка), %d (целое типа int) или %f (вещественное типа double), и произвольное количество других аргументов. Не пользуйтесь функцией printf(). Используйте макросы определенные в .

4) Имеется узел бинарного дерева:


struct Node
{
char name[10]; //имя узла
Node * left; //левая ветвь
Node * right; //правая ветвь
};

Определите функцию добавления новых узлов в дерево AddNode() и функцию удаления дерева DelTree().Определите рекурсивную функцию вывода такого дерева PrintTree() на экран.

5) Имеется элемент односвязного списка:


struct List
{
void * data; //указатель на данные
List * next; //указатель на следующий элемент
}
* head; //указатель на начало списка

Определите следующие функции: Add() – добавление нового элемента в начало или конец списка (предусмотреть обе возможности), PrintList() – вывод содержимого списка на экран и Delete() – удалить i-й элемента из списка.

6) Имеется элемент стека (дисциплина обслуживания LIFO):


struct Stack
{
void * data; //указатель на данные
Stack * prev; //указатель на предыдущий элемент
}
* top; //указатель на вершину стека

Определите следующие функции: Push() – поместить данные в стек, Pop() – извлечь данные из стека (при этом элемент удаляется из стека), PrintStack() – вывод на экран содержимого стека.

7) Бинарное дерево называется сбалансированным тогда и только тогда, когда высоты двух его поддеревьев отличаются не более чем на единицу. Используя описание узла дерева из задания 4 определите рекурсивную функцию TreeHeight(), которая вычисляет высоту дерева. Высота дерева, состоящего из единственного узла равна 0. Если узел имеет ветви, то высота такого дерева вычисляется следующим образом:

высота = 1 + max(высота_левого_поддерева, высота_правого_поддерева)
Определите функцию IsBalancedTree(), которая возвращает 1 если дерево сбалансировано и 0 в противном случае.
8) Имеется элемент очереди (дисциплина обслуживания FIFO):


struct Queue
{
void * data; //указатель на данные
Queue * next; //указатель на следующий элемент очереди
} * begin; //указатель на начало очереди

Определите следующие функции: Put() – поместить элемент в конец очереди, Get() – извлечь элемент из очереди (при этом элемент удаляется из очереди), PrintQueue() – вывод на экран содержимого очереди.

9) Определите структуру Complex для хранения комплексных чисел:


struct Complex
{
double re; //вещественная часть
double im; //мнимая часть
};

Определите следующие функции: Add(), Sub(), Mul(), Div() – сложение, вычитание, умножение и деление комплексных чисел. Все функции должны возвращать ссылку на новое комплексное число, содержащее результат операции. Определите функцию PrintComplex() для вывода значения комплексного числа на экран в алгебраической или показательной формах.

10) Определите структуру TreeNode – узел дерева:


struct TreeNode
{
char * name; //имя узла
TreeNode * nodes; //список дочерних узлов
TreeNode * next; //следующий узел на том же уровне
}
* root; //корневой узел (первый узел на нулевом уровне)

Определите следующие функции: AddNode() – добавление нового дочернего узла, FindNode() – поиск узла по его имени, DelTree() – удаление всего дерева, PrintTree() – вывод дерева (имен узлов) на экран.

11) Определите структуру Pair – пара «имя = значение» и структуру Pairs – массив пар:


struct Pair
{
char * name; //имя
int value; //значение
};
#define MAX_PAIRS 100
struct Pairs
{
Pair p[MAX_PAIRS]; //массив пар
int count; //количество пар в массиве
};

Определите следующие функции для работы с массивом: GetValue() – получить значение для заданного имени (функция должна возвратить 0 если нет такого имени и 1 в случае успеха, а значение возвращать через параметр функции, передаваемый по ссылке или указателю), SetValue() –установить значение для заданного имени (если такого имени в массиве нет, то добавить в массив новую пару), PrintPairs() – вывод всех пар на экран.

12) Определите структуру Array – одномерный массив вещественных чисел:


struct Array
{
double * vec; //непосредственно вектор
unsigned size; //размер вектора
int last; //индекс последнего элемента
};

Определите следующие функции: NewArray() – создание нового массива, размер которого передается в качестве параметра. Функция возвращает указатель на новый массив, DelArray() – полное освобождение памяти занятой массивом, Add() – добавление нового значения в массив, Del() – удаление из массива i-го элемента, Print() – вывод элементов массива на экран.



ЛАБОРАТОРНАЯ РАБОТА №1. ПЕРЕХОД ОТ ЯЗЫКА С К ЯЗЫКУ С++

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

ЛАБОРАТОРНАЯ РАБОТА №3. ОБЪЕКТЫ КЛАССОВ

ЛАБОРАТОРНАЯ РАБОТА №4. ПЕРЕОПРЕДЕЛЕНИЕ ОПЕРАТОРОВ

ЛАБОРАТОРНАЯ РАБОТА №5. ПРОИЗВОДНЫЕ КЛАССЫ И ИЕРАРХИИ КЛАССОВ

ЛАБОРАТОРНАЯ РАБОТА №6. ШАБЛОНЫ

ЛАБОРАТОРНАЯ РАБОТА №7. ОБРАБОТКА ИСКЛЮЧЕНИЙ

ЛАБОРАТОРНАЯ РАБОТА №8. ДИНАМИЧЕСКАЯ ИДЕНТИФИКАЦИЯ И ПРИВЕДЕНИЕ ТИПА




Вы на сайте:


Student.Gomel.by