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

Лабораторная № 2_1 Сдать оформленные работы до 25 февраля Функции-шаблоны. Классы-шаблоны. Для ввода-вывода данных использовать потоки.

Общие задания.

Задание 1 Класс шаблон стек.

Задание 2 Класс шаблон очередь.

Задание 3 Класс шаблон список.

Задание 4 Класс шаблон Point.

Задание 5 Класс шаблон Ratio (дроби)

Задание 6 Класс шаблон Array(массив).

Задание 7 Класс шаблон матрица.

Задание 8 Класс шаблон String.

Задание 9 Класс шаблон Set (множество).

Задание 10 Класс шаблон контейнер.

Создать параметризованный класс данных (шаблон)- массив данных о студентах(с динамическим выделением памяти) - CONTAINER". Этот класс предназначен для ввода, хранения и вывода информации. Переменными-членами класса являются количество записей и указатель на массив структур.

Данные о каждой записи хранятся в структуре.

Необходимо проверить шаблон для трех типов (классов): Container1, Container2, Container3, Для каждой структуры должен быть определен оператор вывода в текстовый поток (файл) (ореratог <<). Эти операторы понадобятся для реализации функций основных классов.

1) Для шаблона "CONTAINER" кроме обязательных конструктора, деструктора и т.д., реализовать основные операции для работы с массивом:

  1. ввод из текстового потока (файла) массива данных

  2. вывод в текстовый поток (файл) массива данных

  3. вывод в бинарный поток (файл) массива данных

  4. для вывода массива данных перегрузить operator <<

  5. operator=

  6. доступ к элементу (operator[])

  7. создать па основе этих данных массив новый массив (функц. 1 согласно индивидуальному варианту).

  8. Упорядочить полученный массив в порядке (функц. 3 согласно индивидуальному варианту).

2) Создать отдельную функцию шаблон, с параметром класс-шаблон CONTAINER и элемент структуры (функц. 2 согласно индивидуальному варианту)

Частичное описание класса шаблона:

template<class T>

class CONTAINER

{

int count;

T*M;

public:

CONTAINER ();

CONTAINER(int );

CONTAINER(CONTAINER <T> & m);

~CONTAINER();

};

Частичное описание функции main()

int main()

{

CONTAINER <Container1> M;

cout<<M;

CONTAINER <Container2> K;

cout<<K;

Container3 st // или Container1 st или Container2 st

CONTAINER <Container3> R;

R.function1Varianta(K,M); //Функция внутри класса-шаблона

function2Varianta( Х , st); //функция-шаблон, первый параметр согласно индивидуальному варианту

X.Sortfunction3();//какой контейнер X (М, К, R) - указано в индивидуальном варианте

}

Индивидуальные варианты

1. Container1 - «Студенты факультета», Container2 - «Студенты имеющие задолженности по сессии» и Container3 - «Студенты, сдавшие сессию».

Структуры:

struct Container1

{

char Name[50];

char Addr[50];

};

struct Container2

{

char Name[50];

int Count;

};

struct Container3

{

char Name[50];

char Addr[50];

int Count;

};

Функции:

1. Сформировать массив Container3, как разность Container1 и Container2, содержащий данные только о тех студентах, которые присутствуют в первом массиве и отсутствуют во втором.

2. Поиск в Container1 студентов, проживающих на одной улице (сравнение по всем полям)

3. Сортировка Container1 по полю Name.