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