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

1. Условие:

Даны две матрицы: а из 3-х строк и 5 столбцов (в дальнейшем будем условно записывать а[3*5]) и b[7*3]. Вычислить минимальные значения для каждой строки каждой из этих матриц.

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

#include <conio.h>

#include <iostream>

 

using namespace std;

 

void masout(float a[ ],int n,char c);

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

void minmatr(float [ ][5],int n,int m,float min[ ]);

 

void main()

{float a[3][5],b[7][5], mina[3], minb[7];

 matrin(a,3,5,'a'); matrin(b,7,3,'b');

 minmatr(a,3,5,mina); minmatr(b,7,3,minb);

 masout(mina,3,'a'); masout(minb,7,'b');

 _getch();

}

 

void minmatr(float a[][5],int n,int m,float min[])

{int i,j;

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

{min[i]=a[i][0];

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

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

min[i]=a[i][j];

}

}

 

void matrin(float a[][5],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];

}

void masout(float a[],int n,char c)

{int i;

 cout<<"Results for "<<c<<endl;

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

cout<<a[i]<<" ";

 cout<<endl;

}


 

2. Условие:

В матрицах A (7×7) и B (5×5) заменить каждый положительный элемент, стоящий выше главной диагонали, на нуль.

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

#include <iostream>

using namespace std;

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

{

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

{

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

{

cin >> m[i][c];

}

}

}

int ProcessMatrix(float m[][10], int k, int n)

{

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

{

for (int c = i + 1; c < n; c++)

{

if (m[i][c] > 0)

m[i][c] = 0;

}

}

return 0;

}

void OutNumbers(float m[][10], int k, int n)

{

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

{

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

cout << m[i][c] << "\t";

cout << endl;

}

}

void main()

{

       setlocale(LC_ALL, "Russian");

       float A[10][10], B[10][10];

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

       FillMatrix(A, 7, 7);

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

       FillMatrix(B, 5, 5);

       ProcessMatrix(A, 7, 7);

       ProcessMatrix(B, 5, 5);

       cout << "Новая матрица А: \n";

       OutNumbers(A, 7, 7);

       cout << "Новая матрица B: \n";

       OutNumbers(B, 5, 5);

}

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

#include <iostream>

using namespace std;

class Matrix

{

protected:

int n, m;

int** matrix;

public:

Matrix(int n1, int m1);

void Fill();

void Process();

void Out();

};

 

class NewMatrix: public Matrix

{

public:

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

void Fill();

void Process2();

};

 

Matrix::Matrix(int n1, int m1)

{

n = n1; m = m1;

};

 

void Matrix::Fill()

{

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

matrix = new int* [n];

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

{

            matrix[i] = new int[m];

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

            {

                        cin >> matrix[i][c];

            }

}

}

 

void NewMatrix::Fill()

{

cout << "ВВЕДИТЕ МАТРИЦУ В" << endl;                    //отличается оформлением приглашения

matrix = new int* [n];

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

{

            matrix[i] = new int[m];

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

            {

                        cin >> matrix[i][c];

            }

}

}

 

void Matrix::Process()

{

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

{

            for (int c = i + 1; c < m; c++)

            {

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

                                    matrix[i][c] = 0;

                            

            }

}

}

 

void NewMatrix::Process2()//замена положительных значений, стоящих ниже главной диагонали на 1

{

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

{

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

            {

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

                        matrix[i][c] = 1;

                            

            }

}

}

void Matrix::Out()

{

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

{

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

            {

                        cout << matrix[i][c] << "\t";

            }

            cout << endl;

}

}

 

int main()

{

setlocale(LC_ALL, "Rus");

Matrix A(7, 7);

NewMatrix B(5, 5);

A.Fill();

cout << "Новая матрица А: \n";

A.Process();

A.Out();

B.Fill();

cout << "Новая матрица B: \n";

B.Process2();

B.Out();

return 0;

system("pause");

}


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



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