Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи icon

Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи



НазваниеЛабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи
страница3/5
Дата конвертации10.09.2012
Размер0.53 Mb.
ТипЛабораторная работа
1   2   3   4   5
1. /C++ - лабы.docЛабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи

Методические указания

Пример программы создания циклического однонаправленного списка с заголовком приведен на рис.4.


#include

#include

#include

#include

struct tlist //тип элемента списка

{

char info[10]; //информационное поле

tlist *next; //указатель на следующий элемент

};

typedef tlist *plist; // тип "указатель на элемент"


void add(plist &list, char s[])

{

plist node; //указатель на новый элемент

node=new tlist; //выделение памяти под элемент

strcpy(node->info,s); //заполнение элемента

node->next=list->next;

list->next=node; //включение элемента в список

}

void main(void)

{

plist list; //указатель на список

char s[10];

//создание пустого списка с заголовочным элементом

list=new tlist;

list->next=list;

//добавление элемента в список

cout<<"s? ";

cin>>s;

add(list,s);

cout<< list->next->info; //вывод элемента

getch();

}

Рис. 4. Текст программы создания циклического списка

Лабораторная работа №6

Контейнерные классы


Постановка задачи.

Разработать и протестировать контейнерный класс, реализованный на основе динамического массива. Программа должна содержать меню, позволяющее протестировать все функции класса

Варианты заданий

Тип объектов, которые хранятся в контейнерном классе - int (кроме вариантов 8 и 20).

    1. Вектор в n-мерном пространстве

Данные: размер вектора, массив для хранения значений элементов вектора.

Операции: конструктор с параметрами, инициализирующий размер вектора, выделяющий динамическую память под массив и устанавливающий значения элементов вектора в 0. Вывод значений элементов вектора. Ввод вектора. Сложение двух векторов. Скалярное произведение векторов.

    1. Нижняя треугольная матрица

В нижней треугольной матрице элементы, находящиеся выше главной диагонали, равны нулю. Для хранения значений матрицы используется одномерный массив, в котором хранятся только элементы из нижней области матрицы. Пример хранения матрицы A из четырех строк в одномерном массиве B приведен на рис. 5.

Данные.
Количество строк (столбцов), одномерный массив для хранения элементов матрицы.

Операции. Конструктор с параметром, инициализирующий размер матрицы, выделяющий динамическую память под массив и заполняющий матрицу нулями. Установка значения элемента матрицы с индексами i, j. Получение значения элемента матрицы с индексами i, j. Построчный ввод матрицы. Построчный вывод матрицы.

Матрица А Массив В

A00 0 0 0

A10A11 0 0 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9

A20A21A22 0 A00 A10A11 A20A21A22 A30A31A32A33

A30A31A32A33 Значения элементов массива В

Рис. 5. Хранение нижней треугольной матрицы в одномерном массиве

    1. Множество целых чисел из диапазона 0 – n

Множество моделируется массивом из n+1 элемента, значения которых могут быть true или false (1 и 0): значение i-го элементa равно true (1),если значение i принадлежит множеству, иначе оно равно false (0). Пример множества {1, 3, 4} приведен на рис 6.


0 1 0 1 1 0 0 0 0 0

0



Рис. 6. Пример множества {1, 3, 4}

Данные. Максимальное количество элементов множества (n), текущее количество элементов множества, массив для хранения значений множества.

Операции. Конструктор, создающий пустое множество. Деструктор, освобождающий память, выделенную под массив. Добавление элемента i в множество. Удаление элемента i из множества. Определение принадлежности элемента i к множеству. Вывод множества в виде {1, 3, 4}.

    1. Полином

Полином n-степени задается формулой:

a0xn+a1xn-1+a2xn-2+… + an

Данные. Степень полинома, массив для хранения значений коэффициентов полинома.

Операции. Конструктор с параметрами, выделяющий динамическую память под массив и инициализирующий степень полинома. Ввод коэффициентов полинома. Вывод полинома в виде 4х^3 +5x^2 –2x^1-6. Умножение полинома на число. Изменение знаков коэффициентов полинома на противоположные.

    1. Линейный список

Данные. Текущее количество элементов списка, максимальное количество элементов списка, массив для хранения элементов списка.

Операции. Конструктор с параметром, инициализирующий максимальный размер списка, выделяющий динамическую память и создающий пустой список. Проверка: заполнен ли список полностью. Добавление элемента в конец списка. Поиск элемента по значению. Удаление элементов списка с заданным значением. Выполнение реверса (обратного порядка расположения элементов). Вывод списка.

    1. Массив с изменяемым размером

Данные. Размер массива, текущее количество элементов массива, массив для хранения элементов.

Операции. Конструктор c параметрами, инициализирующий размер массива, выделяющий динамическую память под массив и заполняющий элементы массива значением value. Получение значения элемента по его индексу i (если 0<=i<=n-1, то возвращается значение элемента, иначе выдается сообщение об ошибке и программа завершается). Установка значения элемента c индексом i (если 0<=i<=n-1, то устанавливается новое значение элемента, иначе выдается сообщение об ошибке и программа завершается). Получение текущего размера массива. Изменение размера массива (если при этом размер массива увеличивается, то добавляемые в конец массива элементы заполняются значением параметра value, а если размер уменьшается – сохраняются только первые элементы массива)

    1. Множество

Множество моделируется массивом взаимно различных элементов.

Данные Максимальное количество элементов множества, массив для хранения элементов множества, текущее количество элементов множества.

Операции. Конструктор с параметрами, инициализирующий максимальное количество элементов множества, выделяющий динамическую память под массив и заполняющий элементы массива значением value. Добавление элемента в множество. Удаление элемента из множества. Определение принадлежности элемента к множеству. Вывод множества в виде {1, 3, 4}.

    1. Разреженный массив на основе статического массива указателей

Массив на основе указателей используется для хранения разреженных массивов, элементы которых имеют размер намного больший, чем размер указателя. Пример разреженного массива на основе массива указателей приведен на рис. 7.

Максимальный размер массива задается глобальной константой. Тип элементов разреженного массива данных - структура с полями: регистрационный номер, ФИО, адрес, ИНН.

. Данные. Размер массива, массив указателей на данные.

Операции. Конструктор с параметром, инициализирующий размер массива и заполняющий все элементы массива указателей значением NULL. Установка значения элемента с индексом i. Получение значения элемента по его индексу. Подсчет количества непустых элементов в массиве данных. Вывод элементов массива. Операции инициализации размера массива и доступа к элементам массива по индексу должны выполняться с проверкой допустимости размера массива и индекса элемента


A[0] A[1] A[2] A[3] A[4] A[5] A[n-1]




NULL

NULL




NULL

NULL




NULL







*A[0] *A[3] *A[n-1]

Рис. 7. Схема хранения значений элементов разреженного массива


    1. Верхняя треугольная матрица

В верхней треугольной матрице элементы, находящиеся ниже главной диагонали равны нулю. Для хранения значений матрицы используется одномерный массив, в котором хранятся только элементы из верхней области. Пример хранения матрицы A из четырех строк в одномерном массиве B приведен на рис. 8.

Матрица А Массив В

A00 А01А02А03

0 A11 А12А13 B0 B1 B2 B3 B4 B5 B6 B7 B8 B9

0 0 A22 А23 A00 A01A02 A03A11A12 A13A22A23A33

0 0 0 A33 Значения элементов массива В

Рис. 8. Хранение верхней треугольной матрицы в одномерном массиве


Данные. Количество строк (столбцов), одномерный массив для хранения элементов матрицы.

Операции. Конструктор с параметром, инициализирующий размер матрицы и заполняющий матрицу нулями. Установка значения элемента с индексами i, j с проверкой допустимости индексов. Получение значения элемента матрицы с индексами i, j с проверкой допустимости индексов. Построчный ввод матрицы. Построчный вывод матрицы.

    1. Очередь приоритетов

Очередь приоритетов – это совокупность однотипных имеющих приоритет элементов, в которой удаление (и получение) элементов выполняется в соответствии с их приоритетом: элемент с высшим приоритетом выбирается первым.

Данные. Максимальный размер очереди, массив элементов очереди, текущее количество элементов в очереди.

Операции. Конструктор с параметром, инициализирующий максимальный размер очереди и выделяющий динамическую память под массив и создающий пустую очередь. Проверка, пуста ли очередь. Проверка, заполнена ли очередь полностью. Определение размера очереди. Добавление элемента в очередь с проверкой возможности выполнения операции (попытка добавить элемент в заполненную очередь должна приводить к сообщению об ошибке и завершению программы). Удаление элемента с высшим приоритетом из очереди.

11. Дек

Данные. Максимальный размер дека, массив для хранения элементов дека, позиция первого элемента дека, позиция конца дека, текущее количество элементов в деке.

Операции. Конструктор с параметром, инициализирующий максимальный размер дека, выделяющий динамическую память под массив и создающий пустой дек. Получение текущего размера дека. Добавление элемента в начало дека с проверкой возможности выполнения операции (попытка добавить элемент в заполненный дек должна приводить к сообщению об ошибке и завершению программы). Добавление элемента в конец дека. Удаление элемента из начала дека. Удаление элемента из конца дека. Получение значения первого элемента в деке. Получение значения последнего элемента в деке.

12. Кольцевая модель очереди

В кольцевой модели очереди элементы очереди организованы логически в кольцо: в очереди из n элементов после элемента с номером n-1 (нумерация с 0) следует элемент с номером 0. Такая организация позволяет исключить сдвиг всех элементов очереди при удалении элемента из начала очереди. Последовательность добавлений и исключений элементов из кольцевой очереди размером в четыре элемента представлена на рис.9. На рисунке F –позиция первого (исключаемого) элемента очереди, L – позиция следующей вставки, n – текущее количество элементов в очереди. Так как используется кольцевая модель, вставка может выполняться как в конце, так и в начале массива.

Очередь пуста Вставить 8 Вставить 5, 6

n=0 L=0 F=0 n=1 L=1 F=0 n=3 L=3 F=0


8 5 6

8








Удалить 8 Вставить Удалить 5, 6

n=2 L=3 F=1 n=4 L=1 F=1 n=2 L=1 F=3


2 4

5 6

2 5 6 4



Рис. 9. Последовательность добавлений и исключений в кольцевой очереди


Данные. Максимальный размер очереди, массив для хранения элементов очереди, позиция первого (исключаемого) элемента очереди, позиция конца очереди (позиция следующей вставки), текущее количество элементов в очереди.

Операции. Конструктор с параметром, инициализирующий максимальный размер очереди, выделяющий динамическую память под массив и создающий пустую очередь. Получение текущего размера очереди. Добавление элемента в очередь с проверкой возможности выполнения операции (попытка добавить элемент в заполненную очередь должна приводить к сообщению об ошибке и завершению программы). Удаление элемента из очереди. Получение значения первого элемента в очереди. Очистка очереди.

13. Линейный список

Данные. Текущее количество элементов списка, максимальное количество элементов списка, массив для хранения элементов списка.

Операции. Конструктор с параметром, инициализирующий максимальный размер списка, выделяющий динамическую память и создающий пустой список. Добавление элемента в конец списка с проверкой возможности выполнения операции (попытка добавить элемент в заполненный список должна приводить к сообщению об ошибке и завершению программы). Поиск элемента по значению. Удаление первого элемента списка с проверкой возможности выполнения операции, удаление элемента с заданным значением. Вывод списка.

  1. Надежная матрица

В надежной матрице при доступе к элементу по индексам выполняется проверка: находятся ли индексы в допустимых границах.

Данные. Количество строк, количество столбцов, двумерный массив значений элементов.

Операции. Конструктор с параметрами: инициализирующий размеры матрицы. Получение значения элемента матрицы по его индексам с проверкой индексов. Установка значения элемента c индексами с заданными индексами с проверкой индексов. Построчный вывод значений элементов матрицы. Построчный ввод значений элементов матрицы. Произведение двух матриц. Сложение двух матриц.

  1. Матрица с изменяемыми размерами

Данные. Количество строк (n) и столбцов (m) матрицы, динамический массив указателей на строки матрицы (одномерные динамические массивы).

Операции. Конструктор c параметрами, инициализирующий размеры матрицы, выделяющий динамическую память под матрицу и заполняющий элементы матрицы значением value. Получение значения элемента по его индексам i, j (если 0<=i<=n-1 или 0<=j<=m-1, то возвращается значение элемента, иначе выдается сообщение об ошибке и программа завершается). Установка значения элемента c индексами i, j (если 0<=i<=n-1 или 0<=j<=m-1, то устанавливается новое значение элемента, иначе выдается сообщение об ошибке и программа завершается). Получение текущего количества строк. Получение текущего количества столбцов. Изменение размера матрицы (если при этом размер массива увеличивается, то добавляемые элементы заполняются значением параметра value, а если размер уменьшается – сохраняются только элементы из левой верхней области матрицы)

16. Надежный массив

В надежном массиве при доступе к элементу по его индексу выполняется проверка принадлежности индекса допустимому диапазону.

Данные. Массив для хранения элементов, размер массива

Операции. Конструктор с параметрами, инициализирующий размер массива, выделяющий память под массив и заполняющий массив значениями параметра value. Получение элемента массива по его индексу с проверкой индекса. Установка значения элемента c заданным индексом с проверкой индекса. Вывод массива.

17. Вектор в n-мерном пространстве на основе динамического массива.

Данные. Размер вектора, значения элементов вектора.

Операции. Конструктор с параметрами, инициализирующий размер вектора, выделяющий динамическую память под массив и устанавливающий значения элементов вектора равными параметру value. Ввод вектора. Вывод значений элементов вектора. Умножение вектора на число. Изменение знака каждого элемента вектора на противоположный знак.

18. Стек

Данные: максимальный размер стека, массив для хранения элементов списка, вершина стека (номер последнего элемента в массиве).

Операции: Конструктор с параметром, инициализирующий максимальный размер стека и выделяющий динамическую память под массив и создающий пустой стек. Проверка, пустой ли стек. Проверка, заполнен ли полностью стек. Добавление элемента в вершину стека. Удаление элемента из вершины стека. Получение значения элемента из вершины стека.

19. Очередь

Данные. Максимальный размер очереди, позиция первого элемента в очереди, позиция последнего элемента в очереди, текущее количество элементов очереди, массив для хранения элементов очереди.

Операции. Конструктор с параметром, инициализирующий максимальный размер очереди, выделяющий динамическую память под массив и создающий пустую очередь. Получение текущего размера очереди. Добавление элемента в очередь с проверкой возможности выполнения операции (попытка добавить элемент в заполненную очередь должна приводить к сообщению об ошибке и завершению программы). Удаление элемента из очереди. Получение значения первого элемента очереди. Очистка очереди.

20. Разреженный массив на основе динамического массива указателей

Массив на основе указателей используется для хранения разреженных массивов, элементы которых имеют размер намного больший, чем размер указателя. Пример разреженного массива на основе массива указателей приведен на рис. 7.

Тип элементов разреженного массива данных - структура с полями: шифр студента, ФИО, средний балл.

. Данные. Размер массива, массив указателей на данные.

Операции. Конструктор с параметром, инициализирующий размер массива и заполняющий все элементы массива указателей значением NULL. Установка значения элемента с индексом i. Получение значения элемента по его индексу. Подсчет количества непустых элементов в массиве данных. Вывод элементов массива. Операции инициализации размера массива и доступа к элементам массива по индексу должны выполняться с проверкой допустимости размера массива и индекса элемента

Методические указания

Для всех вариантов предусмотреть деструктор, освобождающий память, выделенную под динамический массив.

Объявление класса «Очередь с элементами целого типа на основе статического массива» приведено на рис. 10, реализация компонентной функции «Сцепление двух очередей» - на рис.11.

const int maxsize=40; //максимальный размер очереди

class queue //объявление класса

{

private:

int l; //позиция последнего элемента очереди

int n; //количество элементов в очереди

int q[maxsize]; //массив для хранения элементов очереди

public:

queue(void); //конструктор

void qinsert(int x); //включение элемента х в очередь

int qdelete(void); //исключение элемента из очереди

int qget(void); //получение элемента из начала очереди

void qprint(void); //вывод очереди

queue qconcat(const queue &qq1); //сцепление очередей

};

Рис. 10. Объявление класса queue


queue queue::qconcat(const queue &qq1)

{

int i;

if (n+qq1.n>maxsize)

{

cout<<"Queue is full";

getch();

exit(1);

}

for (i=0;i
q[n+i]=qq1.q[i];

n+=qq1.n; //увеличение текущего размера очереди

return *this; //возвращение текущего объекта

}

Рис. 11. Реализация компонентной функции qconcat

1   2   3   4   5




Похожие:

Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconДокументы
1. /OOP/Лабораторная работа ь00-Введение.doc
2. /OOP/Лабораторная...

Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconЛабораторная работа: создание мини-презентации «Памятники Кремля»
Лабораторная работа проводится в компьютерном классе, с подключением к сети Internet
Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconДокументы
1. /Базовые задачи на обработку массива.doc
2. /ЗадачиНаЛиниВетвление.doc
Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconДокументы
1. /Lab1/Лабораторная работа 1.doc
2. /Lab2/Лабораторная...

Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconИ я забуду Покажи мне и я запомню, Дай мне действовать самому и я научусь. Китайская мудрость Тема: Лабораторная работа
Тема: «Лабораторная работа «Измерение работы и мощности тока в электрической лампочке»
Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconДокументы
1. /C++Builder/15.doc
2. /C++Builder/Алфавитный...

Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconЦелью дипломного проекта является разработка базы данных для сотрудников Красногорского управления внутренних дел
Данная пояснительная записка состоит из четырёх основных разделов, которые в общей сложности занимает 83 печатных листов. В состав...
Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconДокументы
1. /Nash/lab1/Лабораторная работа ь1.doc
2. /Nash/lab10/Лабораторная...

Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconЛабораторная работа Цель работы: научиться создавать при помощи excel базу данных, содержащую различные сведения о работе фирмы. Задачи: Создание списков
Списком называют таблицу, обязательным атрибутом которой является строка заголовков. Требования к оформлению списка следующие
Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconЛабораторная работа №2 «Система безопасности Windows xp»
Лабораторная работа №2 «Система безопасности Windows xp» Цель работы: Изучить систему безопасности Windows xp
Лабораторная работа №1 Разработка консольного приложения в С++ Builder Постановка задачи iconЛабораторная работа Тема: «Приспособление растений к совместному существованию» Задачи: Рассмотреть примеры приспособлений растений к условиям освещённости
Растения, а в частности, деревья полностью приспособились к условиям окружающей среды и поэтому им совсем стало легко выживать в...
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©podelise.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы

Разработка сайта — Веб студия Адаманов