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