#include <iostream>
using namespace std;
class M
{
protected:
int** matrix;
int equal;
int k, c, row, num = 0;
public:
M(int k, int c, int row, int equal)
{
this->k = k;
this->c = c;
this->row = row;
this->equal = equal;
};
void fill()
{
matrix = new int* [k];
for (int i = 0; i < k; i++)
{
matrix[i] = new int[c];
for (int j = 0; j < c; j++)
{
cin >> matrix[i][j];
}
}
}
void process()
{
for (int i = 0; i < c; i++)
{
if (matrix[row][i] == equal)
{
num++;
}
}
}
void out()
{
cout << num;
}
};
class M2:public M //Класс-наследник считает количество и сумму элементов не равных заданному значению в конкретной строке
{
private:
int sum = 0;
public:
M2(int k, int c, int row, int equal):M(k, c, row, equal) {};
void fill()
{
matrix = new int* [k];
for (int i = 0; i < k; i++)
{
matrix[i] = new int[c];
for (int j = 0; j < c; j++)
{
cin >> matrix[i][j];
}
}
}
void process2()
{
for (int i = 0; i < c; i++)
{
if (matrix[row][i]!= equal)
{
sum += matrix[row][i];
num++;
}
}
}
void out()
{
cout << "Number: " << num;
cout << "\nSum: " << sum;
}
};
int main()
{
setlocale(LC_ALL, "rus");
M* A; //объявление матрицы А
M* B;//объявление матрицы B
cout << "Matrix A\n";
A = new M(4, 5, 0, 0);
A->fill(); //вызов функции заполнения для А
cout << "\nMatrix B\n";
B = new M(5, 7, 2, 5);
B->fill();//вызов функции заполнения для B
cout << "A has ";
A->process();
B->process();
A->out(); //Вызов функции обработки и вывода для А
cout << "\nB has ";
B->out();//Вызов функции обработки и вывода для B
cout << "\n";
M2* A1; //объявление матрицы А
M2* B1;//объявление матрицы B
cout << "Matrix A\n";
A1 = new M2(4, 5, 0, 0);
A1->fill(); //вызов функции заполнения для А
cout << "\nMatrix B\n";
B1 = new M2(5, 7, 2, 5);
B1->fill();//вызов функции заполнения для B
cout << "A has ";
A1->process2();
B1->process2();
A1->out(); //Вызов функции обработки и вывода для А
cout << "\nB has ";
B1->out();//Вызов функции обработки и вывода для B
cout << "\n";
system("pause");
return 0;
}
6. Условие:
Даны матрицы A (4×4), B (5×5), C (3×3). Вычислить значение выражения Amin Bmin – Cmin, где Amin (Bmin, Cmin) — минимальный элемент главной диагонали матрицы A (B, C).
|
Функциональная
#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];
}
}
}
}
Объектно-ориентированная
#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;
}
7. Условие:
Для матрицы A (3×7) найти число строк, произведение элементов которых больше единицы, а для матрицы B (4×5) — число строк, произведение элементов которых больше заданного значения Q
Функциональная
#include<iostream>
using namespace std;
void arr_matric(float(&arr)[7][7], int n, int m);
float proizvedenie(float(&arr)[7][7], int n, int m, float Q);
int main()
{
setlocale(LC_ALL, "Russian");
int n, m, K = 0, arr[7][7], Q;
cout << "Введите значение Q: ";
cin >> Q;
cout << "Введите размер матрицы и саму матрицу A: ";
cin >> n >> m;
arr_matric(arr, n, m);
cout << endl;
K = proizvedenie(arr, n, m, 1);
cout << ": " << K;
cout << endl;
cout << "Введите размер матрицы и саму матрицу B: ";
cin >> n >> m;
arr_matric(arr, n, m);
cout << endl;
K = proizvedenie(arr, n, m, Q);
cout << "Число строк, произведение элементов которых больше Q: " << K;
|
cout << endl;
system("pause");
return 0;
}
void arr_matric(float(&arr)[7][7], int n, int m)//Заполнение матрицы
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> arr[i][j];
}
}
}
float proizvedenie(float(&arr)[7][7], int n, int m, float O)//Число строк, произв.эл>Q
{
int k=0, Pr = 1;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Pr = Pr * arr[i][j];
}
if (Pr > O)
{
k++;
}
Pr = 1;
}
return k;
}