Лабораторная работа 8. Тема: Функция - шаблон. Перегрузка операторов

Тема: Функция - шаблон. Перегрузка операторов. Перегрузка функций. Рекурсивные функции.

Цель.

· получить навыки по разработке и применению функции – шаблона

· получить навыки по использованию нестандартных типов;

· получить практический опыт по разработке рекурсивных функций.

Задание

1. Разработайте функцию сортировки массива и протестируйте ее.

2. Перегрузите функцию сортировки для каждого из указанных в варианте типов элементов.

3. Разработайте функцию шаблон для сортировки элементов произвольного типа.

4. Перегрузите (операцию) операции сравнения, которые используются в алгоритме сортировки для сравнения значений структуры. В сравнении значений типа структура будут использоваться ключи сортировки, которые в структуре определены курсивом.

5. Реализуйте рекурсии.

· Для первого задания на рекурсии разработайте функцию. Опишите рекурсивную зависимость в виде табличной функции. Определите глубину рекурсии.

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

6. Разработайте программу, демонстрирующую работу всех функций.

Варианты

Номер Сортировка Перегрузка функции для типов Рекурсия
  обменная Int, double, Struct{int x; int y;} 1. Найти наибольший общий делитель двух целых чисел 2. Создание и вывод линейного однонаправленного списка из n элементов
  вставками Short, float, Struct{double x; int y;} 1. Найти n-ое число Фибоначчи. 2. В однонаправленном списке из n элементов найти элемент с заданным значением и вернуть на него указатель.
  выбора Char, int, Struct{short x; int y;} 1. Определить делится ли число на каждую из своих цифр. 2. Не используя связанный стек проверить баланс скобок в арифметическом выражении, которое передано как строка.
  шейкер Char,double, Struct{int x; char y;} 1. Определить является ли текст – палиндромом. 2. Удалить из связанного однонаправленного списка все элементы, равные заданному.
  Улучшенная обменная сортировка Int, short, Struct{unsigned x; int y;} 1. Дан массив из n элементов вещественного типа. Вычислить среднее значение всех элементов массива. 2. Создание связанного стека из n элементов.
  Вставками с использованием второго массива. Unsigned long, double, Struct{char x[20]; doble y; } 1. Сколько квадратов можно отрезать от прямоугольника со сторонами a и в. 2. Удаление связанного стека.
  Сортировка вставками Int, short, Struct{unsigned x; int y; char z} 1. Найти максимальный элемент в массиве из n элементов. 2. Создание очереди на однонаправленном списке.
  Поразрядная сортировка посредством второго массива Int, long, Struct{float x; double y; } 1. Перевести число из 10-системы счисления в систему с основанием В(1<В≤10) 2. Удаление очереди, реализованной на однонаправленном списке
  Обменная Double, char, Struct{long x; char y; } 1. Бинарный поиск элемента в массиве 2. Создание двунаправленного списка.
  Шейкер сортировка Unsigned short, long, Struct{long x; double y; } 1. Вычислить значение цифрового корня для некоторого целого числа N. 2. Найти в двухнаправленном списке количество четных элементов.
  Сортировать по правилу: положительные, отрицательные, нули Unsigned long, long, Struct{char x; double y; } 1. Вычислить x1(x2+x3)(x4+x5+x6)....(x46+x47+...+x55). 2. Удаление двунаправленного списка
  Сортировка методом подсчета. Unsignedint, long, Struct{chsr x[5]; double y; } 1. Сортировка массива по возрастанию 2. Создать новый однонаправленный список из исходного однонаправленного списка, записав его элементы наоборот.
  Вставками Unsigned short,float, Struct{long x; double y; } 1. Дана последовательность из N чисел Х1,Х2,....,ХN. Вычислить значение выражения: Хn(Хn+Xn-1)(Хn+Xn-1+Xn-2)(Хn+Xn-1+Xn-3)... (Хn+Xn-1+Xn-3+...+X1). Массив не использовать. 2. Удалить из однонаправленного списка нули.
  Шейкер сортировка Unsigned short, unsigned long, Struct{long x; double y; } 1. Дана строка. Выполнить переворот строки (записать наоборот) на ее же месте в памяти. 2. Определить количество вхождений: положительных, отрицательных, нулевых значений.
  Метод Хоара short, long, float Struct{char x; int y; } 1. Ханойская башня. 2. Удалить однонаправленный список.
  Обменная Unsigned short, long, Struct{long x; double y; } 1. Прохождение лабиринта 2. Определить симметрично ли число, цифры которого последовательно записаны в узлах двунаправленного списка

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: