Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 1 курс / метод указания / Информатика. Основы программирования на С++. Учебное пособие.doc
Скачиваний:
143
Добавлен:
08.06.2015
Размер:
2.15 Mб
Скачать

Результат выполнения программы

k=10

m=4

b1=1

bk=4.6

c1=1

ck=3.6

Полученный результат: y= 5.80738

!! Проанализируйте программу. Создав новый файл проекта с именем faktorial.ide, наберите в нем текст данной программы, откомпилируйте ее и произведите запуск программы на выполнение.

6.3. Перегруженные функции

С++ позволяет определять несколько функций, реализующих один и тот же алгоритм, с одним и тем же именем. Эта особенность называетсяперегрузкой функции, а сами функции -перегруженнымифункциями. Применение таких функций делает программы более понятными и легко читаемыми.

Перегруженные функции различаются компилятором с помощью так называемой сигнатуры – списка типов их аргументов. Однако, используя в перегруженных функциях параметры по умолчанию, следует быть осторожным, так как функция с пропущенными аргументами может быть вызвана не той перегруженной функцией.

Примером эффективного использования перегрузки функций является задача сортировки массивов различных типов. Ниже приведена программа сортировки методом "пузырька" числовых массивов типа int,long,floatиdoubleразличной размерности (лист. 6.2).

Листинг 6.2. func.сpp

#include <iostream.h>

#include <math.h>

//Прототипы перегруженных функций sort

void sort(int,int[]);

void sort(int,long[]);

void sort(int,float[]);

void sort(int,double[]);

void main() //Основная программа

{

/*Корректируемые параметры до использования

программы: значение m и тип z */

const int m=5; //Размерность массива чисел

double z[m]; //Тип массива чисел z

//Ввод массива

cout<<"Введите элементы массива z[]:\n";

for(int i=0;i<m;i++)

{

cout<<"z["<<i<<"]=";cin>>z[i];

}

cout<<"\nИсходный массив чисел:\n"<<"z["<<m<<"]={";

for(int i=0;i<m;i++)

cout<<z[i]<<" ";

cout<<"}"<<endl;

cout<<"\nОтсортированный массив чисел:\n"<<"z["<<m<<"]={";

sort(m,z); //Обращение к функции sort с массивом типа double

cout<<"}";

}

//Перегруженная функция для массива типа int

void sort(int n,int mass[]) //Заголовок с параметром - массивом

{

//Сортировка методом "пузырька"

for(int i=0;i<n-1;i++)

{ int a;

for(int j=i+1;j<n;j++)

if (mass[j]<mass[i])

{a=mass[i];

mass[i]=mass[j];

mass[j]=a;

}

}

//Вывод отсортированного массива

for(int i=0;i<n;i++)

cout<<mass[i]<<" ";

}

//Перегруженная функция для массива типа long

void sort(int n,long mass[])

{

for(int i=0;i<n-1;i++)

{ long a;

for(int j=i+1;j<n;j++)

if (mass[j]<mass[i])

{a=mass[i];

mass[i]=mass[j];

mass[j]=a;

}

}

for(int i=0;i<n;i++)

cout<<mass[i]<<" ";

}

//Перегруженная функция для массива типа float

void sort(int n,float mass[])

{

for(int i=0;i<n-1;i++)

{ float a;

for(int j=i+1;j<n;j++)

if (mass[j]<mass[i])

{a=mass[i];

mass[i]=mass[j];

mass[j]=a;

}

}

for(int i=0;i<n;i++)

cout<<mass[i]<<" ";

}

//Перегруженная функция для массива типа double

void sort(int n,double mass[])

{

for(int i=0;i<n-1;i++)

{ double a;

for(int j=i+1;j<n;j++)

if (mass[j]<mass[i])

{a=mass[i];

mass[i]=mass[j];

mass[j]=a;

}

}

for(int i=0;i<n;i++)

cout<<mass[i]<<" ";

}