15. Условие:
Проверить, есть ли в матрице A (5×4) строки с отрицательной суммой и есть ли в матрице B (4×5) строки, сумма элементов которых меньше 5.
1) Функциональная
#include <iostream>
using namespace std;
void matrixin(float arr[][10], int n, int m, int x, char c)
{
cout «"Введите матрицу" «c «endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin» arr[i][j];
}
}
}
void function(float arr[][10], int n, int m, int x)
{
int k = 0;
for (int i = 0; i < n; i++)
{
float summ = 0;
for (int j = 0; j < m; j++)
{
summ = summ + arr[i][j];
}
if (summ < x)
k = k + 1;
}
return k;
}
int main()
{
setlocale(LC_ALL, "rus");
float arrA[10][10],arrB[10][10];
int n, m, x, k;
cout «"Введите размерность матрицы А: ";
cin» n» m;
cout«"Введите переменную X: ";
cin» x;
matrixin(arrA, n, m, x, ' ');
function(arrA, n, m, x);
if (k > 0)
cout «("В матрице есть ") «k «(" строк, сумма элементов которых меньше ") «x;
else
cout «("В матрице нет строк, удовлетворяющих условию\n");
cout «endl;
cout «"Введите размерность матрицы B: ";
cin» n» m;
cout«"Введите переменную";
cin» x;
matrixin(arrB, n, m, x, ' ');
function(arrB, n, m, x);
cout «("В матрице есть ") «k «(" строк, сумма элементов которых меньше ") «x;
|
|
else
cout «("В матрице нет строк, удовлетворяющих условию\n");
cout «endl;
system("pause");
}
2) Объектно-ориентированная
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
class matr {
protected:
float **a;
int n, m, x, k;
char c;
public:
matr(int n1, int m1, char c1);
void input(); //метод ввода
int output(); // метод вывода
int seeker(); //метод обработки
};
matr::matr(int n1, int m1, char c1) {
n = n1; m = m1; c = c1;
a = new float*[n];
for (int i = 0; i < n; i++) {
a[i] = new float[m];
for (int j = 0; j < m; j++)
a[i][j] = 0;
}
}
void matr::input() {
cout << "Введите переменную X - ";
cin >> x;
cout << "Введите матрицу " << c << " размером " << n << "*" << m << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
cin >> a[i][j];
}
}
int matr::output() {
if (k > 0)
cout << ("В матрице есть ") << k << ("строк, удовлетворяющих условию");
else
cout << ("В матрице нет строк, удовлетворяющих условию\n");
cout << endl;
}
int matr::seeker() { //обработка по строкам
k=0;
for (int i = 0; i < n; i++){
float sum = 0;
for (int j = 0; j < m; j++)
{
sum = sum + a[i][j];
}
if (sum < x)
k = k + 1;
}
return k;
};
// наследование
class matr_nasl: public matr {
public:
matr_nasl(int n1, int m1, char c1);
void output(); // переопределенный метод вывода
int seeker2(); // переопределенный метод обработки
void input(); // переопределенный метод ввода
};
matr_nasl::matr_nasl(int n1, int m1, char c1): matr(n1, m1, c1) {}
void matr_nasl::output() {
if (k > 0)
cout << ("В матрице есть ") << k << ("столбцов, удовлетворяющих условию");
else
cout << ("В матрице нет столбцов, удовлетворяющих условию\n");
cout << endl;
}
void matr_nasl::input() {
cout << "Введите новую переменную X - ";
cin >> x;
cout << "Введите новую матрицу " << c << " размером " << n << "*" << m << endl;
|
|
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
cin >> a[i][j];
}
}
int matr_nasl::seeker2() { //обработка по столбцам
k=0;
for (int j = 0; j < m; j++){
float sum = 0;
for (int i = 0; i < n; i++)
{
sum = sum + a[i][j];
}
if (sum < x)
k = k + 1;
}
return k;
};
int main() {
setlocale(LC_ALL, "Russian");
matr *a; matr_nasl *b;
a = new matr(3, 3, 'A');
b = new matr_nasl(3, 3, 'B');
a->input();
a->seeker();
a->output(); cout << endl;
b->input();
b->seeker2();
b->output();
delete a;
delete b;
}