Объектно-ориентированная




#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;

}



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-07-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: