Написать програму на Си++ (C++). Даны матрицы. Вычислить общую сумму элементов строк

10. Условие:

Для матрицы A (7×3) вычислить общую сумму элементов строк, первый элемент которых положителен, а для матрицы B (6×4) — общую сумму элементов строк, в которых первый элемент больше единицы.

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

#include <iostream>

using namespace std;

 

void FILL(float matrix[][10], int k, int l)

{

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

{

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

{

cin >> matrix[i][c];

}

}

}

void CHECK(float matrix[][10], int k, int l, int D, float *sum)

{

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

{

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

{

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

{

*sum += matrix[i][j];

}

}

}

}

void OUT(float sum1, float sum2)

{

cout << "\nСумма для А: "<<sum1;

cout << "\nСумма для B: "<<sum2;

}

int main()

{

setlocale(LC_ALL, "Russian");

float A[10][10], B[10][10], sumA = 0, sumB = 0;

cout << "Введите матрицу A 7x3:\n";

FILL(A, 7, 3);

cout << "Введите матрицу B 6x4:\n";

FILL(B, 6, 4);

CHECK(A, 3, 3, 0, &sumA);

CHECK(B, 3, 3, 1, &sumB);

OUT(sumA, sumB);

system("pause");

return 0;

}

11. Условие:

Даны целочисленные матрицы A (4×5) и B (3×7). Проверить, есть ли в матрице A элементы, равные D, а в матрице B — элементы, равные Q, где D, Q — заданные значения.

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

#include <iostream>

using namespace std;

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

{

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

{

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

{

cin >> m[i][c]; }

}

}

bool ProcessMatrix(int m[][10], int k, int n, int D)

{

bool num = false;

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

{

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

{

if (m[i][c] == D)

{

num = true;

break;

}

}

}

return num;

}

void OutNumbers(bool num)

{

if (num)

{

out << "Есть такие элементы";

}

else

{

cout << "Таких элементов нет";

}

}

void main()

{

setlocale(LC_ALL, "Russian");

int A[10][10], B[10][10], D, Q;

cout << "Введите D: ";

cin >> D;

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

FillMatrix(A, 4, 5);

cout << "\nВведите Q: ";

cin >> Q;

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

 

FillMatrix(B, 3, 7);

bool numA = ProcessMatrix(A, 4, 5, D);

bool numB = ProcessMatrix(B, 3, 7, Q);

cout << "\nВ матрице A ";

OutNumbers(numA);

cout << "\nВ матрице B ";

OutNumbers(numB);

cout << "\n";

system("pause");}

 

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

#include<iostream>               

using namespace std;

 

class Matrix

{

protected:

int n, m;

char D_Q;

float DQ;

float** arr;

public:

Matrix(int n, int m, char D_Q);

void FillMatrix();

bool Process();

};

 

Matrix::Matrix(int n, int m, char D_Q) // конструктор

{

this->n = n;

this->m = m;

this->D_Q = D_Q;

};

 

 

void Matrix::FillMatrix() // заполнение матрицы

{

cout << "размером " << n << " на " << m << endl;

arr = new float* [n];

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

{

            arr[i] = new float[m];

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

            {

                        cin >> arr[i][j];

            }

}

cout << "Введите " << D_Q << ": " << endl;

cin >> DQ;

}

 

bool Matrix::Process() // обработка матрицы

{

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

{

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

            {

                        if (arr[i][c] == DQ) //проверка на равенство

                        {

                                    return true;

                        }

            }

 

}

return false; //возврат количества элементов

}

 

 

class matrix_nasl: public Matrix // Класс наследник

{

 

public:

matrix_nasl(int n, int m, char D_Q); // Конструктор наследника

int MinEl(); // Поиск минимального элемента (доп. условие)

void FillMatrix(); // Переопределенный метод ввода

};

 

matrix_nasl::matrix_nasl(int n, int m, char D_Q): Matrix(n, m, D_Q) {} //Использование конструктора предка в контрукторе наследника

 

int matrix_nasl::MinEl() // Поиск минимального элемента

{

int min = arr[0][0];

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

{

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

            {

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

                        {

                                    min = arr[i][j];

                        }

            }

}

return min;

}

 

void matrix_nasl::FillMatrix() // Заполнение матрицы

{

cout << "РАЗМЕРОМ " << n << " НА " << m << endl;

arr = new float* [n];

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

{

            arr[i] = new float[m];

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

            {

                        cin >> arr[i][j];

            }

}

cout << "ВВЕДИТЕ " << D_Q << ": " << endl;

cin >> DQ;

}

 

int main()

{

setlocale(LC_ALL, "Rus");

bool proverka;

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

Matrix A(4, 5, 'D');

A.FillMatrix();

proverka = A.Process();

if (proverka)

{

            cout << "Есть такие элементы" << endl;

}

else

{

            cout << "Таких элементов нет" << endl;

}

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

matrix_nasl B(3, 7, 'Q');

B.FillMatrix();

proverka = B.Process();

if (proverka)

{

            cout << "Есть такие элементы" << endl;

}

else

{

            cout << "Таких элементов нет" << endl;

}

cout << "Минимальный элемент матрицы B: " << B.MinEl() << endl;

system("pause");

}


12.  Условие:

Для каждой из матриц A (4×5) и B (5×3) определить количество строк, сумма элементов которых положительна.

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

#include <conio.h>

#include <iostream>

#include <fstream>

 

using namespace std;

 

 

void vvod(float a[][5], int N, int M, char c) // заполнение матрицы

{

cout << "Input matrix " << c << " size of " << N << '*' << M << endl;

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

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

                        cin >> a[i][j];

}

int sum1(float a[][5], int N, int M)

{

float sum;

int    k = 0;

 

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

{

            sum = 0;

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

                        sum = sum + a[i][j];

            if (sum > 0)

                        k = k++;          

}

return k;

}

int main() // основная функция

{

 float a[4][5]; float b[5][5];

int K1, K2;

vvod(a, 4, 5, 'a');

K1 = sum1(a, 4, 5);

cout << "Results for "<< K1 << endl;

vvod(b, 5, 3, 'b');

K2 = sum1(b, 5, 3);

cout << "Results for " << K2 << endl;

system("pause");

}


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

#include <iostream>

using namespace std;

 

 

class P //Создание класса P

{

protected:

float** matrix; //матрица

int n, m; //размерность матрицы

int num = 0; //количество элементов, удовл. условию

char c; //имя матрицы

public:

P(int n, int k, char c); //конструктор

void fillM() //заполнение матрицы

{

            cout << "Input matrix " << c << " size of " << n << '*' << m << endl;

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

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

                                    cin >> matrix[i][j];

}

void processM() //Обработка матрицы: определить количество строк, сумма элементов которых положительна

{

            float sum;

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

            {

                        sum = 0;

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

                        {

                                    sum += matrix[i][j];

                        }

                        if (sum > 0)

                        {

                                    num++;

                        }

            }

}

void outR() //Вывод результатов

{

            cout << "\nResult for matrix " << c << " is " << num << endl;

}

};

P::P(int n, int m, char c)//конструктор

{

this->c = c;

this->n = n;

this->m = m;

this->matrix = new float* [n];//Выделение памяти для матрицы

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

{

            matrix[i] = new float[m];

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

                        matrix[i][j] = 0;

}

}

 

void program() //Вспомогательная функция

{

P* A; //объявление указателя на экземпляр класса

P* B;

A = new P(4, 5, 'A'); //Создание экземпляра А класса P

B = new P(5, 3, 'B'); //Создание экземпляра B класса P

 

A->fillM(); //заполнение матрицы

B->fillM();//заполнение матрицы

 

A->processM();//обработка

B->processM();//обработка

 

A->outR(); //вывод результатов

B->outR();//вывод результатов

}

 

 

int main()

{

program(); //вызов вспомогательной функции

system("pause");

return 0;

}



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



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