|
Хочу получить удостоверение. Сколько стоит оплата? |
Опубликован: 10.12.2015 | Доступ: свободный | Студентов: 617 / 96 | Длительность: 07:10:00
Тема: Программирование
Специальности: Программист, Системный архитектор
Лекция 22:
Дружественные функции
< Лекция 21 || Лекция 22
Дружественные функции позволяют использовать закрытую информацию класса, не являясь членами этого класса. Эти функции, не описываемые в самом классе, могут работать с теми же ресурсами, что и функции-члены этого класса. В описании прототипа дружественных функций используется слово friend. В приводимом ниже примере сортировки методом Шелла (функция сортировки - член класса) печать производится дружественной функцией print.
//==========================================================
// Name : friend_class.cpp
// Author : Marat
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//==========================================================
#include <iostream>
using namespace std;
#define array_size 5
class sorting {
//Дружественная функция
friend void print(double *item, int count);
public:
void shell_sorting(double *item, int count);
};
//Функция сортировки методом Шелла
void sorting::shell_sorting(double *item, int count)
{
register int i,j,gap,k;
double x;
char a[]={9,5,3,2,1};
for(k=0;k<5;k++)
{
gap=a[k];
for(i=gap;i<count;++i)
{
x=item[i];
for(j=i-gap;x<item[j] && j>=0;j-=gap)
item[j+gap]=item[j];
item[j+gap]=x;
}
}
}
void print(double *item, int count);
int main() {
double a[array_size]={0.5, 1.6, 1.4, 8.3, 5.8};
cout<<"\nUnsorted array...";
print(a,array_size);
sorting data;
data.shell_sorting(a,array_size);
cout<<"\nArray after sorting...";
print(a,array_size);
cout<<"\n"<<endl;
return 0;
}
void print(double *item, int count)
{
for(int i=0;i<count;i++)
{
cout<<"\n"<<item[i];
}
}
Результат:
Unsorted array… 0.5 1.6 1.4 8.3 5.8 Array after sorting... 0.5 1.4 1.6 5.8 8.3
< Лекция 21 || Лекция 22