Описать тип-объект MATRIX (матрица произвольной размерности M*N) и его методы: ввод матрицы; вывод матрицы; определение минимального элемента среди отрицательных элементов матрицы. Описать тип и методы его потомка MATR (методы: определение наибольшего общего делителя элементов матрицы; определение максимального среди неповторяющихся элементов матрицы ).
#include "stdafx.h"
//#include <stdlib.h>
//#include <iomanip>
//#include <cstdlib>
#include <iostream>
using namespace std;
class Matrix {
public:
int m,n;
int a[100][100];
Matrix ( );// конструктор
~Matrix ( );// деструктор
void Enter ();
void Display ();
void Min();
};
Matrix:: Matrix ( )
{
cout << "Vvod v matrix \n";
cout << "Vvedite kolvo strok: ";
cin >> m;
cout << "Vvedite kolvo stolbcov: ";
cin >> n;
}
Matrix:: ~Matrix()
{
cout << "Deleted...\n";
}
void Matrix :: Enter ( )
{
int i;
int j;
for (i=0; i<m; i++)
{
for (j=0; j<n;j++)
{
cout << "Vvod chisel v matricu: " << "a["<<i<<"]["<<j<<"]:" ;
cin >> a[i][j];
}
}
cout <<"\n";
};
void Matrix :: Display ()
{
int i;
int j;
int l=0;
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
cout << a[i][j] << " ";
}
cout << "\n";
}
cout << "\n";
cin >> l;
};
void Matrix :: Min ()
{
int i;
int j;
int min = a[0][0];
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
if (a[i][j]<0)
{
if (a[i][j]<min)
{
min = a[i][j];
}
}
}
}
if (min > 0)
{cout << " Net otricatelbnblx 4isel";
}
else
{
cout << "Minimum= " << min;
}
cout << "\n";
}
int nod (int a, int b) //нахождение НОД по алгоритму Евклида
{
while (a && b)
if (a >= b)
a %= b;
else
b %= a;
return a | b;
}
class Matr : public Matrix
{
public:
void NOD ();
void Max ();
};
void Matr :: NOD()
{
int i;
int j;
int q=a[0][0];
for(i = 0; i<m; i++)
{
for(j=0; j<n; j++)
{
q=nod(q, a[i][j]);
}
}
cout << q;
cout << "\n";
}
void Matr :: Max()
{
int i;
int j;
int max = a[0][0];
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
if (a[i][j]>max)
{
max = a[i][j]; // Нахождение максимального элемента матрицы
}
}
}
cout << max;
cout << "\n";
}
int main ()
{
Matrix ob;
Matr ob2;
ob.Enter ();
ob.Display();
ob.Min();
ob2.NOD();
ob2.Max();
system("pause");
return 0;
};
Ошибка возникает при выводе ответа ob2.NOD() и ob2.Max(). Не могу разобраться, помогите. Убираю наследника все работает, создаю обратно, все перестает работать.