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




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

#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) заменить каждый положительный элемент, стоящий выше главной диагонали, на нуль.

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

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

}

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

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

}

3. Условие:

Если среднее арифметическое SA положительных элементов матрицы A (5×4) больше среднего арифметического SB положительных элементов матрицы B (4×6), найти сумму SA + SB, иначе найти разность SA – SB.

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

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

}

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

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

}


 

4. Условие:

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

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

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

}



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-07-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: