Написать програму на Си++ (C++). Даны целочисленные матрицы. Найти число нулевых элементов

5. Условие:

Даны целочисленные матрицы A (4×5) и B (5×7). В первой строке матрицы A найти число нулевых элементов, а в третьей строке матрицы B — число элементов, равных 5.

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

#include <iostream>

using namespace std;

void fillM(int matrix[][10], int k, int c);

int processingM(int matrix[][10], int c, int row, int equal);

int main()

{

setlocale(LC_ALL, "rus");

 

int A[10][10]; //объявление матрицы А

 

int B[10][10];//объявление матрицы B

 

cout << "Матрица A\n";

 

fillM(A, 4, 5); //вызов функции заполнения для А

 

cout << "\nМатрица B\n";

 

fillM(B, 5, 7);//вызов функции заполнения для B

 

cout << "Кол-во 0, содержащихся в 1-ой строке матрицы A: " << processingM(A, 5, 0, 0);//Вызов функции обработки и вывода для А

 

cout << "\nКол-во 5, содержащихся в 3-й строке матрицы B: " << processingM(B, 7, 2, 5); //Вызов функции обработки и вывода для B

cout << "\n";

system("pause");

return 0;

}

void fillM(int matrix[][10], int k, int c) //Заполнение матрицы

{

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

{

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

{

cin >> matrix[i][j];

}

}

}

int processingM(int matrix[][10], int c, int row, int equal) //обработка матрицы

{

int num = 0;

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

{

if (matrix[row][i] == equal)

{

num++;

}

}

return num;

}

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

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

}

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: