При выполнении вариантов заданий придерживайтесь следующих ключевых моментов.
1. Шаблоны функций применяются для записи идентичных действий над данными различных типов.
2. Вызов шаблона – это создание шаблоном конкретного варианта функции.
3. Шаблоны можно перегружать как обычными функциями, так и другими шаблонами.
4. Перегрузкой функций называется использование нескольких функций с одним именем и различными типами параметров.
5. Перегрузка применяется, когда одно и то же по смыслу действие реализуется по-разному для различных типов или структур данных.
6. При написании перегруженных функций необходимо, чтобы в процессе поиска нужного варианта функции по ее вызову не возникало неоднозначности. Неоднозначность может возникнуть из-за преобразований типов, параметров по умолчанию и ссылок.
7. Перегруженные функции должны находиться в одной области видимости, иначе произойдет сокрытие аналогично одинаковым именам переменных во вложенных блоках.
8. Перегруженные функции могут иметь параметры по умолчанию, при этом значения одного и того же параметра в разных функциях должны совпадать. В различных вариантах перегруженных функций может быть различное количество параметров по умолчанию.
9. Функции не могут быть перегружены, если описание их параметров отличается только модификатором const или использованием ссылки.
10. Многоточие в заголовке функции используется тогда, когда число аргументов неизвестно.
11. Многоточие в заголовке функции требует использования макрокоманд для доступа к параметрам таких функций.
12. Нарушать указанный порядок макрокоманд нельзя.
ЗАДАНИЕ 10. Перегрузка функций
Первый уровень сложности
Написать программу для работы с двумя одномерными динамическими массивами размером n. Для формирования массивов и вывода их на печать использовать стандартные потоки. Оформить решение задачи в виде шаблона функций. Глобальные данные в программе не допускаются. Все необходимые данные должны передаваться функциям через параметры (для параметров, соответствующих размерам массивов, используйте умалчиваемые значения). Программа должна демонстрировать использование умалчиваемых значений параметров, а также использование шаблона функций для типов данных int и double.
1. Первым на печать вывести массив, сумма значений которого окажется наименьшей.
2. Первым на печать вывести массив, произведение значений которого окажется наименьшим.
3. В каждом из массивов найти наименьшее значение и прибавить его ко всем элементам массивов. На печать вывести исходные и преобразованные массивы.
4. В каждом из массивов найти наибольшее значение и вычесть его из всех элементов массивов. На печать вывести исходные и преобразованные массивы.
5. В каждом из массивов найти среднее арифметическое всех элементов массивов. На печать вывести исходные массивы и найденные значения.
6. Первым на печать вывести массив, содержащий наименьшее значение. Напечатать также это значение и его порядковый номер.
7. Подсчитать в массивах количество отрицательных элементов и первым на печать вывести массив, имеющий наименьшее их количество.
8. Подсчитать в массивах количество положительных элементов и первым на печать вывести массив, имеющий наименьшее их количество.
9. Подсчитать в массивах количество отрицательных элементов и первым на печать вывести массив, имеющий наибольшее их количество.
10. Подсчитать в массивах количество положительных элементов и первым на печать вывести массив, имеющий наибольшее их количество.
11. Подсчитать в массивах количество элементов, больших значения t, и первым на печать вывести массив, имеющий наименьшее их количество.
12. Подсчитать в массивах количество элементов, меньших значения t, и первым на печать вывести массив, имеющий наименьшее их количество.
13. Подсчитать в массивах количество элементов, больших значения t, и первым на печать вывести массив, имеющий наибольшее их количество.
14. В каждом из массивов найти наименьшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.
15. В каждом из массивов найти наибольшее значение и умножить на него все элементы массивов. На печать вывести исходные и преобразованные массивы.
Второй уровень сложности
Написать программу для работы с двухмерным динамическим массивом размером n ´ m. Для формирования массива и вывода на печать использовать стандартные потоки. Оформить решение задачи в виде шаблона функций. Глобальные данные в программе не допускаются. Все необходимые данные должны передаваться функциям через параметры (для параметров, соответствующих размерам массивов, используйте умалчиваемые значения). Программа должна демонстрировать использование умалчиваемых значений параметров, а также использование шаблона функций для типов данных int и double.
1. В заданном двухмерном массиве определить максимальное из чисел, встречающихся в массиве более одного раза.
2. В заданном двухмерном массиве определить сумму элементов в тех строках, которые не содержат отрицательных элементов.
3. В заданном двухмерном массиве определить количество строк, содержащих хотя бы один нулевой элемент.
4. В заданном двухмерном массиве определить номер первой из строк, не содержащих ни одного положительного элемента.
5. В заданном двухмерном массиве определить номер первого из столбцов, не содержащих ни одного отрицательного элемента.
6. В заданном двухмерном массиве определить номер первого из столбцов, содержащих хотя бы один нулевой элемент.
7. В заданном двухмерном массиве определить номер первой из строк, содержащих хотя бы один положительный элемент.
8. В заданном двухмерном массиве определить количество строк, среднее арифметическое элементов которых меньше заданной величины.
9. В заданном двухмерном массиве определить сумму модулей его отрицательных нечетных элементов.
10. В заданном двухмерном массиве определить минимум среди сумм элементов диагоналей, параллельных главной диагонали.
11. В заданном двухмерном массиве определить количество элементов массива, лежащих в диапазоне от А до В.
12. В заданном двухмерном массиве определить произведение элементов массива, расположенных после максимального по модулю элемента.
13. В заданном двухмерном массиве определить сумму модулей элементов массива, расположенных после минимального по модулю элемента.
14. В заданном двухмерном массиве определить сумму положительных элементов массива, расположенных до максимального элемента.
15. В заданном двухмерном массиве определить сумму элементов массива, расположенных до минимального элемента.
Таблицы символов ASCII