6. Условие:
Даны матрицы A (4×4), B (5×5), C (3×3). Вычислить значение выражения Amin Bmin – Cmin, где Amin (Bmin, Cmin) — минимальный элемент главной диагонали матрицы A (B, C).
1) Функциональная
#include<iostream>
using namespace std;
void arr_input(int arr[5][5], int n, int m, int& min);
void element(int arr[5][5], int n, int m, int& min);
int main()
{
setlocale(LC_ALL, "Russian");
int n, m, min, Amin, Bmin, Cmin;
int arr[5][5];
cout << "Введите размер и саму матрицу A: ";
cin >> n >> m;
arr_input(arr, n, m, min);
element(arr, n, m, min);
Amin = min;
cout << "Введите размер и саму матрицу B: ";
cin >> n >> m;
arr_input(arr, n, m, min);
element(arr, n, m, min);
Bmin = min;
cout << "Введите размер и саму матрицу C: ";
cin >> n >> m;
arr_input(arr, n, m, min);
element(arr, n, m, min);
Cmin = min;
cout << "\nВыражение Amin * Bmin - Cmin = " << Amin << " * " << Bmin << " - " << Cmin << " = " << Amin * Bmin - Cmin;
return 0;
}
void arr_input(int arr[5][5], int n, int m, int& min)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> arr[i][j];
min = arr[0][0];
}
}
}
void element(int arr[5][5], int n, int m, int& min)
{
for (int i = 0; i < n; i++)
{
if (i == i)
{
if (arr[i][i] < min)
{
min = arr[i][i];
}
}
}
}
2) Объектно-ориентированная
#include <iostream>
using namespace std;
class Matrix
{
protected:
float** arr, n, m;
public:
Matrix(int n1, int m1);
~Matrix();
void arr_input();
float min_element();
};
class New: public Matrix
{
public:
New(int n1, int m1): Matrix(n1, m1) {};
~New();
void arr_input();
float max_element();
};
Matrix::Matrix(int n1, int m1)
{
n = n1;
m = m1;
arr = new float* [n];
for (int i = 0; i < n; i++)
{
arr[i] = new float[m];
for (int j = 0; j < m; j++)
{
arr[i][j] = 0;
}
}
}
Matrix::~Matrix()
{
this->n;
this->arr;
for (int i = 0; i < n; i++)
{
delete[] this->arr[i];
}
delete[] this->arr;
}
void Matrix::arr_input()
{
cout << "Введите матрицу размером " << n << " на " << m << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> arr[i][j];
}
}
}
float Matrix::min_element()
{
float min = arr[0][0];
for (int i = 0; i < n; i++)
{
if (arr[i][i] < min)
{
min = arr[i][i];
}
}
return min;
}
void New::arr_input()
{
cout << "ВВЕДИТЕ МАТРИЦУ РАЗМЕРОМ " << n << " НА " << m << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> arr[i][j];
}
}
}
float New::max_element()
{
float max = arr[0][0];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (arr[i][j] > max)
{
max = arr[i][j];
}
}
}
return max;
}
New::~New()
{
this->n;
this->arr;
for (int i = 0; i < n; i++)
{
delete[] this->arr[i];
}
delete[] this->arr;
}
int main()
{
setlocale(LC_ALL, "Ru");
float exp = 0;
Matrix* A, * C;
New* B;
A = new Matrix(4, 4);
B = new New(5, 5);
C = new Matrix(3, 3);
cout << "Матрица A:\n";
A->arr_input();
cout << endl;
cout << "Матрица B:\n";
B->arr_input();
cout << endl;
cout << "Матрица C:\n";
C->arr_input();
cout << endl;
exp = A->min_element() * B->max_element() - C->min_element();
cout << "Значение выражения Amin * Bmax - Cmin = " << A->min_element() << " * " << B->max_element() << " - " << C->min_element() << " = " << exp;
}