3. Условие:
Если среднее арифметическое SA положительных элементов матрицы A (5×4) больше среднего арифметического SB положительных элементов матрицы B (4×6), найти сумму SA + SB, иначе найти разность SA – SB.
1) Функциональная
#include <iostream>
using namespace std;
void WOD(int[5][6], int n, int m, char c);
int POS(int[5][6], int n, int m);
int main(){
setlocale(LC_ALL, "RUS");
int A[5][6], B[4][6];
int SA, SB;
WOD(A, 5, 4, 'A');
WOD(B, 4, 6, 'B');
SA = POS(A, 5, 4);
SB = POS(B, 4, 6);
cout «SA «endl;
cout «SB«endl;
if (SA > SB)
cout «" сумма положительных элементов SA > SB " «SA + SB «endl;
else
cout «" сумма положительных элементов SA < SB " «SA - SB «endl;
system("pause");
}
/****************************************/
void WOD(int a[][6], int n, int m, char c)
{ int i, j;
cout «"Input matrix " «c «" size of " «n «"*" «m «endl;
/* Далее цикл для поэлементного ввода массива*/
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
cin» a[i][j];
}
/****************************************/
int POS(int a[][6], int n, int m)
{
int i, j, k=0, SA=0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 4; j++)
{
if (a[i][j] > 0)
{
SA += a[i][j];
k++;
}
}
}
SA = SA / k;
return (SA);
}
2) Объектно-ориентированная
#include <iostream>
|
|
using namespace std;
class Matrica
{
protected:
float** mas, Sr;
int n, m;
char c;
public:
Matrica(char c, int n = 1, int m = 1);
void vvod();
float pos();
};
class Matrica_2class: public Matrica
{
public:
Matrica_2class(char c, int n, int m): Matrica(c, n, m) {};
void vvod();
float pos();
};
Matrica::Matrica(char c, int n, int m)
{
this->n = n;
this->m = m;
mas = new float* [n];
for (int i = 0; i < n; i++)
{
mas[i] = new float[m];
for (int j = 0; j < m; j++)
{
mas[i][j] = 0;
}
}
}
void Matrica::vvod()
{
cout << "Ввод матрицы " << c << " размером " << n << "*" << m << endl;
/* цикл для поэлементного ввода массива*/
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> mas[i][j];
}
float Matrica::pos()
{
Sr = 0;
int k = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (mas[i][j] > 0)
{
Sr += mas[i][j];
k++;
}
}
}
return Sr = Sr / k;
}
void Matrica_2class::vvod()
{
cout << "ВВОД МАТРИЦЫ " << c << " РАЗМЕРОМ " << n << "*" << m << endl;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> mas[i][j];
}
float Matrica_2class::pos()
{
Sr = 0;
int k = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
|
|
if (mas[i][j] > 1)
{
Sr += mas[i][j]; //ср.арифметическое нечетных элементов больше 0
k++;
}
}
}
return Sr = Sr / k;
}
int main()
{
setlocale(LC_ALL, "Rus");
float SA = 0, SB = 0;
Matrica* A;
Matrica_2class* B;
A = new Matrica('A', 5, 4);
B = new Matrica_2class('B', 4, 6);
cout << "Матрица A:\n";
A->vvod();
cout << endl;
cout << "Матрица B:\n";
B->vvod();
cout << endl;
SA = A->pos();
SB = B->pos();
if (SA > SB)
{
cout << " сумма положительных элементов SA > SB " << endl;
cout << "SA + SB = " << SA + SB;
}
else
{
cout << " сумма положительных элементов SA < SB " << endl;
cout << "SA - SB = " << SA - SB;
}
delete A;
delete B;
}