Class matrclass matr { private: float *a; int n,m; public: matr(); //Прототип дружественной функции friend void Print(matr &); void obr(); ~matr() { delete[]a; puts("\n rabotal destruktor 1");} };
//Объявление конструктора matr:: matr () { ..... } //Объявление функции обработки void matr::obr() { int k; for(int i=n-1; i>=0; i--) { k=0; for(int j=0;j<m;j++) if (*(a+i*m+j)<0) k++; if (k==m) { for(int l=i;l<n;l++) for(int j=0;j<m;j++) *(a+l*m+j)=*(a+(l+1)*m+j); n=n-1;} } } //Объявление дружественной функции void Print (matr & b) { printf("\n"); for(int i=0; i<b.n; i++) { for(int j=0;j<b.m;j++) printf("%6.1f", *(b.a+i*b.m+j)); } } //----------------------------------- void main() { int kol; clrscr(); matr x; Print(x); getch(); x.obr(); Print(x); kol=x.Setkol(); printf("n=%d",kol); getch(); } Пример использования функции, дружественной двум классам одновременно. Найти большее значение между максимумом матрицы и максимум массива. //Неполное описание второго класса class matriza; //Описание структуры первого класса
|