Написать програму на Си++ (C++). Даны матрицы, вычислить значение выражения

4. Условие:

Даны матрицы A (5×5), B (7×7), C (4×4). Вычислить значение выражения PA + PB – PC, где PA (PB, PC) — произведение положительных элементов главной диагонали матрицы A (B, C).

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

#include <iostream>

using namespace std;

void FillMatrix(float M[][10], int n, int m)

{

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

       {

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

                  {

                              cin >> M[i][j];

                  }

       }

}

 

bool ProcessMatrix(float M[][10], int n, float& P)

{

       bool F = false;

       P = 1;

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

       {

                  if (M[i][i] > 0)

                  {

                              P = P * M[i][i];

                              F = true;

                  }

       }

       return F;

}

 

 

void check(bool F, float P, int& k)

{

       if (F == true)

       {

                  cout << "Произведение положительных элементов главной диагонали матрицы: " << P << "\n";

       }

       else if (F == false)

       {

                  cout << "Главная диагональ матрицы не имеет положительных элементов\n";

                  k++;

       }

}

 

int main()

{

       setlocale(LC_ALL, "Russian");

       float M[10][10], PA = 1, PB = 1, PC = 1;

       int n, k = 0;

       bool Pr = true;

       cout << "\nВведите значения матрицы А (5,5):\n";

       FillMatrix(M, 5, 5);

       Pr = ProcessMatrix(M, 5, PA);

       check(Pr, PA, n);

       //PA = P;

 

       cout << "\nВведите значения матрицы B (7,7):\n";

       FillMatrix(M, 7, 7);

       Pr = ProcessMatrix(M, 7, PB);

       check(Pr, PB, n);

       //PB = P;

 

       cout << "\nВведите значения матрицы C(4,4):\n";

       FillMatrix(M, 4, 4);

       Pr = ProcessMatrix(M, 4, PC);

       check(Pr, PC, n);

       //PC = P;

 

       if (k == 0)

       {

                  cout << "PA + PB – PC = " << PA << " + " << PB << " - " << PC << " = " << PA + PB - PC << endl;

       }

       else

       {

                  cout << "В одной из матриц отсутствуют положительные элементы в главной диагонале\n";

       }

 

       system("pause");

       return 0;

}

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

#include <iostream>

using namespace std;

 

class Matrix

{

protected:

       int n, m;

       int** matrix;

public:

       Matrix(int n1, int m1);

       void FillMatrix();

       int ProcessMatrix();

};

 

class NewMatrix: public Matrix

{

public:

       NewMatrix(int n1, int m1): Matrix(n1, m1) {}

       void FillMatrix2();

       int ProcessMatrix2();

};

 

Matrix::Matrix(int n1, int m1)

{

       n = n1; m = m1;

};

 

void Matrix::FillMatrix()

{

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

       matrix = new int*[n];

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

       {

                  matrix[i] = new int[m];

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

                  {

                              cin >> matrix[i][j];

                  }

       }

}

 

void NewMatrix::FillMatrix2()

{

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

       matrix = new int*[n];

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

       {

                  matrix[i] = new int[m];

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

                  {

                              cin >> matrix[i][j];

                  }

       }

}

 

int Matrix::ProcessMatrix()

{

       int P = 1;

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

       {

                  {

                              if (matrix[i][i] > 0)

                                          P = P * matrix[i][i];

                  }

       }

       return P;

}

 

int NewMatrix::ProcessMatrix2()

{

       int P = 1;

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

       {

                  {

                              if (matrix[i][i] < 0)

                                          P = P * matrix[i][i];

                  }

       }

       return P;

}

 

int main()

{

       int PA, PB, PC;

       setlocale(LC_ALL, "Rus");

       Matrix A(5, 5), B(7, 7);

       NewMatrix C(4, 4);

       cout << "Введите матрицу A (5,5):" << endl;

       A.FillMatrix();

       cout << "Произведение положительных элементов главной диагонали матрицы А: " << A.ProcessMatrix() << endl;

       cout << "Введите матрицу B (7,7):" << endl;

       B.FillMatrix();

       cout << "Произведение положительных элементов главной диагонали матрицы B: " << B.ProcessMatrix() << endl;

       cout << "Введите матрицу C (4,4):" << endl;

       C.FillMatrix();

       cout << " Произведение отрицательных элементов главной диагонали С " << C.ProcessMatrix2() << endl;

       PA = A.ProcessMatrix();

       PB = B.ProcessMatrix();

       PC = C.ProcessMatrix2();

       cout << " PA + PB – PC = " << PA << " + " << PB << " - " << PC << " = " << PA + PB - PC << endl;

       system("pause");

}


 

 


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



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