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




#include<iostream>

using namespace std;

 

class Matrix

{

protected:

int n, m;

char D_Q;

float DQ;

float** arr;

public:

Matrix(int n, int m, char D_Q);

void FillMatrix();

bool Process();

};

 

Matrix::Matrix(int n, int m, char D_Q) // конструктор

{

this->n = n;

this->m = m;

this->D_Q = D_Q;

};

 

 

void Matrix::FillMatrix() // заполнение матрицы

{

cout << "размером " << n << " на " << m << endl;

arr = new float* [n];

for (int i = 0; i < n; i++)

{

arr[i] = new float[m];

for (int j = 0; j < m; j++)

{

cin >> arr[i][j];

}

}

cout << "Введите " << D_Q << ": " << endl;

cin >> DQ;

}

 

bool Matrix::Process() // обработка матрицы

{

for (int i = 0; i < n; i++)

{

for (int c = 0; c < m; c++)

{

if (arr[i][c] == DQ) //проверка на равенство

{

return true;

}

}

 

}

return false; //возврат количества элементов

}

 

 

class matrix_nasl: public Matrix // Класс наследник

{

 

public:

matrix_nasl(int n, int m, char D_Q); // Конструктор наследника

int MinEl(); // Поиск минимального элемента (доп. условие)

void FillMatrix(); // Переопределенный метод ввода

};

 

matrix_nasl::matrix_nasl(int n, int m, char D_Q): Matrix(n, m, D_Q) {} //Использование конструктора предка в контрукторе наследника

 

int matrix_nasl::MinEl() // Поиск минимального элемента

{

int min = arr[0][0];

for (int i = 0; i < n; i++)

{

for (int j = 0; j < m; j++)

{

if (arr[i][j] < min)

{

min = arr[i][j];

}

}

}

return min;

}

 

void matrix_nasl::FillMatrix() // Заполнение матрицы

{

cout << "РАЗМЕРОМ " << n << " НА " << m << endl;

arr = new float* [n];

for (int i = 0; i < n; i++)

{

arr[i] = new float[m];

for (int j = 0; j < m; j++)

{

cin >> arr[i][j];

}

}

cout << "ВВЕДИТЕ " << D_Q << ": " << endl;

cin >> DQ;

}

 

int main()

{

setlocale(LC_ALL, "Rus");

bool proverka;

cout << "Введите матрицу A ";

Matrix A(4, 5, 'D');

A.FillMatrix();

proverka = A.Process();

if (proverka)

{

cout << "Есть такие элементы" << endl;

}

else

{

cout << "Таких элементов нет" << endl;

}

cout << "ВВЕДИТЕ МАТРИЦУ B ";

matrix_nasl B(3, 7, 'Q');

B.FillMatrix();

proverka = B.Process();

if (proverka)

{

cout << "Есть такие элементы" << endl;

}

else

{

cout << "Таких элементов нет" << endl;

}

cout << "Минимальный элемент матрицы B: " << B.MinEl() << endl;

system("pause");

}


12. Условие:

Для каждой из матриц A (4×5) и B (5×3) определить количество строк, сумма элементов которых положительна.

Функциональная

#include <conio.h>

#include <iostream>

#include <fstream>

 

using namespace std;

 

 

void vvod(float a[][5], int N, int M, char c) // заполнение матрицы

{

cout << "Input matrix " << c << " size of " << N << '*' << M << endl;

for (int i = 0; i < N; i++)

for (int j = 0; j < M; j++)

cin >> a[i][j];

}

int sum1(float a[][5], int N, int M)

{

float sum;

int k = 0;

 

for (int i = 0; i < N; i++)

{

sum = 0;

for (int j = 0; j < M; j++)

sum = sum + a[i][j];

if (sum > 0)

k = k++;

}

return k;

}

int main() // основная функция

{

float a[4][5]; float b[5][5];

int K1, K2;

vvod(a, 4, 5, 'a');

K1 = sum1(a, 4, 5);

cout << "Results for "<< K1 << endl;

vvod(b, 5, 3, 'b');

K2 = sum1(b, 5, 3);

cout << "Results for " << K2 << endl;

system("pause");

}


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

#include <iostream>

using namespace std;

 

 

class P //Создание класса P

{

protected:

float** matrix; //матрица

int n, m; //размерность матрицы

int num = 0; //количество элементов, удовл. условию

char c; //имя матрицы

public:

P(int n, int k, char c); //конструктор

void fillM() //заполнение матрицы

{

cout << "Input matrix " << c << " size of " << n << '*' << m << endl;

for (int i = 0; i < n; i++)

for (int j = 0; j < m; j++)

cin >> matrix[i][j];

}

void processM() //Обработка матрицы: определить количество строк, сумма элементов которых положительна

{

float sum;

for (int i = 0; i < n; i++)

{

sum = 0;

for (int j = 0; j < m; j++)

{

sum += matrix[i][j];

}

if (sum > 0)

{

num++;

}

}

}

void outR() //Вывод результатов

{

cout << "\nResult for matrix " << c << " is " << num << endl;

}

};

P::P(int n, int m, char c)//конструктор

{

this->c = c;

this->n = n;

this->m = m;

this->matrix = new float* [n];//Выделение памяти для матрицы

for (int i = 0; i < n; i++)

{

matrix[i] = new float[m];

for (int j = 0; j < m; j++)

matrix[i][j] = 0;

}

}

 

void program() //Вспомогательная функция

{

P* A; //объявление указателя на экземпляр класса

P* B;

A = new P(4, 5, 'A'); //Создание экземпляра А класса P

B = new P(5, 3, 'B'); //Создание экземпляра B класса P

 

A->fillM(); //заполнение матрицы

B->fillM();//заполнение матрицы

 

A->processM();//обработка

B->processM();//обработка

 

A->outR(); //вывод результатов

B->outR();//вывод результатов

}

 

 

int main()

{

program(); //вызов вспомогательной функции

system("pause");

return 0;

}


13. Условие:

В каждой из матриц A (4×3), B (5×4) поменять местами две строки: в A вторую и третью строки, в B — первую и третью.

Функциональная

#include "pch.h"

#include <conio.h>

#include <iostream>

 

using namespace std;

void matrin(float a[][4], int n, int m, char c);

void matrout(float a[][4], int n, int m, char c);

void swap(float a[][4], int n1, int m1, int n, int m, char c);

 

void main()

{

setlocale(LC_ALL, "Russian");

float A[4][4], B[5][4];

// ввод матрицы

matrin(A, 4, 3, 'A');

matrin(B, 5, 4, 'B');

// вывод

matrout(A, 4, 3, 'A');

matrout(B, 5, 4, 'B');

// поменять местами строки

swap(A, 2, 3, 4, 3, 'A');

swap(B, 1, 3, 5, 4, 'B');

// вывод

matrout(A, 4, 3, 'A');

matrout(B, 5, 4, 'B');

_getch();

}

 

void matrin(float a[][4], int n, int m, char c)

{

int i, j;

cout << "Введите матрицу " << c << endl;

for (i = 0; i < n; i++)

for (j = 0; j < m; j++)

cin >> a[i][j];

cout << endl;

}

void matrout(float a[][4], int n, int m, char c)

{

int i, j;

cout << "Матрица " << c << endl;

for (int i = 0; i < n; i++) {

for (int j = 0; j < m; j++)

cout << a[i][j] << "\t";

cout << endl;

}

}

void swap(float a[][4], int n1, int m1, int n, int m, char c) {

int i, j, tmp;

for (int j = 0; j < m; j++) {

tmp = a[n1-1][j];

a[n1-1][j] = a[m1-1][j];

a[m1-1][j] = tmp;

}

}



Поделиться:




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

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


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