- •Оглавление
- •Блок-схемы линейных алгоритмов
- •Блок-схемы разветвляющихся алгоритмов
- •Блок-схемы циклических алгоритмов
- •Линейные алгоритмы
- •Условный оператор
- •Оператор выбора
- •Оператор цикла
- •Массивы
- •Двумерные массивы
- •Пользовательские функции
- •Указатели
- •Символьные массивы
- •Структуры
- •Поразрядные операции
- •Аргументы по умолчанию
- •Перегрузка функций
- •Перегрузка операций
-
Перегрузка функций
Перегрузка функций – возможность в С++ определить несколько функций с одним и тем же именем, если эти функции имеют различные наборы параметров (различие типа или числа параметров, либо порядка следования их типов).
Когда вызывается перегруженная функция, компилятор выбирает нужную путём анализа числа, типов и порядка аргументов.
Перегрузка функций используется для создания нескольких функций, выполняющих сходные задачи, но над данными разного вида.
В качестве примера рассмотрим программу, использующую функцию pow3 для возведения в 3 степень целых, вещественных чисел или символьного массива (под возведением в третью степень символьного массива здесь будем понимать «утроение» строки: из строки «aab» должна получиться строка «aabaabaab»).
#include <stdio.h>
/* прототипы трех функций, возводящих данные в куб */
int pow3(int); // возводит в куб целое число
double pow3(double); // возводит в куб вещественное
char* pow3(const char*, int); // возводит в куб строку
/* основная функция */
void main(void) {
/* вызывается функция int pow3(int) */
printf_s(“%d\n”, pow3(3));
/* вызывается функция double pow3(double) */
printf_s(“%lf\n”, pow3(1.5));
/* вызывается функция char* pow3(const char*, int) */
printf_s(“%s\n”, pow3("abc", 3));
}
/* реализация функции int pow3(int) */
int pow3(int a) {
return a * a * a;
}
/* реализация функции double pow3(double) */
double pow3(double a) {
return a * a * a;
}
/* реализация функции char* pow3(const char*, int) */
char* pow3(const char* a, int size) {
char result[1024];
char *s = result;
int i = 0, j = 0;
while (i < size) {
for (j = 0; a[j] != 0; j++) {
*s = a[j];
s++;
}
i++;
}
*s = 0;
return result;
}
Задание: написать функцию в соответствии с заданием и продемонстрировать её работу.
1. Функция вычисления площади фигуры. Перегрузить функцию для следующих фигур: квадрат, прямоугольник, трапеция. Исходные данные должны быть представлены целыми числами. Результат должен быть представлен вещественным числом.
2. Функция вычисления площади фигуры. Перегрузить функцию для следующих фигур: квадрат, прямоугольник, трапеция. Исходные данные должны быть представлены вещественными числами. Результат должен быть представлен вещественным числом.
3. Функция вычисления объема тела. Перегрузить функцию для следующих тел: куб, пирамида, усеченная пирамида. Исходные данные должны быть представлены целыми числами. Результат должен быть представлен вещественным числом.
4. Функция вычисления объема тела. Перегрузить функцию для следующих тел: куб, пирамида, усеченная пирамида. Исходные данные должны быть представлены вещественными числами. Результат должен быть представлен вещественным числом.
5. Функция вычисления площади поверхности тела. Перегрузить функцию для следующих тел: куб, цилиндр, усеченный конус. Исходные данные должны быть представлены целыми числами. Результат должен быть представлен вещественным числом.
6. Функция вычисления площади поверхности тела. Перегрузить функцию для следующих тел: куб, цилиндр, усеченный конус. Исходные данные должны быть представлены вещественными числами. Результат должен быть представлен вещественным числом.
7. Функция вычисления периметра фигуры. Перегрузить функцию для следующих фигур: квадрат, прямоугольник, треугольник. Исходные данные должны быть представлены целыми числами. Результат должен быть представлен целым числом.
8. Функция вычисления периметра фигуры. Перегрузить функцию для следующих фигур: квадрат, прямоугольник, треугольник. Исходные данные должны быть представлены вещественными числами. Результат должен быть представлен вещественным числом.
9. Функция для определения максимального числа. Перегрузить функцию для определения максимума из двух, трех, четырех чисел. Исходные данные должны быть представлены целыми числами. Результат должен быть представлен целым числом.
10. Функция для определения максимального числа. Перегрузить функцию для определения максимума из двух, трех, четырех чисел. Исходные данные должны быть представлены вещественными числами. Результат должен быть представлен вещественным числом.
11. Функция для определения минимального числа. Перегрузить функцию для определения минимума из двух, трех, четырех чисел. Исходные данные должны быть представлены целыми числами. Результат должен быть представлен целым числом.
12. Функция для определения минимального числа. Перегрузить функцию для определения минимума из двух, трех, четырех чисел. Исходные данные должны быть представлены вещественными числами. Результат должен быть представлен вещественным числом.
13. Функция для вывода значений переменных на экран. Перегрузить функцию для вывода целого значения, вещественного значения, символьного массива.
14. Функция, вычисляющая общее сопротивление параллельно соединенных резисторов. Перегрузить функцию для случая соединения двух, трех, четырех резисторов.
15. Функция, вычисляющая общую индуктивность параллельно соединенных катушек индуктивности. Перегрузить функцию для случая соединения двух, трех, четырех катушек индуктивности.
16. Функция, возвращающая значение максимального элемента в целочисленном массиве. Перегрузить функцию для одномерного, двумерного и трехмерного массива.
17. Функция, возвращающая значение максимального элемента в массиве вещественных чисел. Перегрузить функцию для одномерного, двумерного и трехмерного массива.
18. Функция, возвращающая наибольший общий делитель. Перегрузить функцию для определения наибольшего общего делителя двух, трёх чисел.
19. Функция, возвращающая наименьшее общее кратное. Перегрузить функцию для определения наименьшего общего кратного двух, трёх чисел.
20. Функция, подсчитывающая количество неотрицательных элементов в целочисленных массивах. Перегрузить функцию для подсчета неотрицательных элементов в одном массиве, в двух массивах, в трех массивах.
