
- •Лабораторная № 2_1 Сдать оформленные работы до 25 февраля Функции-шаблоны. Классы-шаблоны. Для ввода-вывода данных использовать потоки.
- •Частичное описание класса шаблона:
- •Частичное описание функции main()
- •Индивидуальные варианты
- •1. Container1 - «Студенты факультета», Container2 - «Студенты имеющие задолженности по сессии» и Container3 - «Студенты, сдавшие сессию».
- •2. Container1 - «Студенты дневного отделения», Container2 - «Студенты-заочники» и Container3 - « Все студенты».
- •3. Container1 - «Студенты факультета», Container2 - «Студенты и аспиранты - активисты» и Container3 - « Активные студенты с отличной успеваемостью».
- •4. «Студенты, взявшие книги в библиотеке бгу», Container2 «Читатели, вернувшие все книги») и Container3 «Студенты, не сдавшие книги».
- •5. Container1 - «Студенты факультета», Container2 - «Студенты имеющие задолженности по сессии» и Container3 - «Студенты, сдавшие сессию».
- •6. Container1 - «Студенты дневного отделения», Container2 - «Студенты-заочники» и Container3 - « Все студенты».
- •7. Container1 - «Студенты факультета», Container2 - «Студенты и аспиранты - активисты» и Container3 - « Активные студенты с отличной успеваемостью».
- •8. «Студенты, взявшие книги в библиотеке бгу», Container2 «Читатели, вернувшие все книги») и Container3 «Студенты, не сдавшие книги».
- •9. Container1 - «Студенты факультета», Container2 - «Студенты имеющие задолженности по сессии» и Container3 - «Студенты, сдавшие сессию».
- •10. Container1 - «Студенты дневного отделения», Container2 - «Студенты-заочники» и Container3 - « Все студенты».
- •11. Container1 - «Студенты факультета», Container2 - «Студенты и аспиранты - активисты» и Container3 - « Активные студенты с отличной успеваемостью».
- •12. «Студенты, взявшие книги в библиотеке бгу», Container2 «Читатели, вернувшие все книги») и Container3 «Студенты, не сдавшие книги».
Лабораторная № 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" кроме обязательных конструктора, деструктора и т.д., реализовать основные операции для работы с массивом:
ввод из текстового потока (файла) массива данных
вывод в текстовый поток (файл) массива данных
вывод в бинарный поток (файл) массива данных
для вывода массива данных перегрузить operator <<
operator=
доступ к элементу (operator[])
создать па основе этих данных массив новый массив (функц. 1 согласно индивидуальному варианту).
Упорядочить полученный массив в порядке (функц. 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.