|
|
|
| Задание такое:
Дана целочисленная прямоугольная матрица. Определить:
1.количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент
2.номера строки и столбцов всех седловых точек матрицы.
Примечание. Матрица A имеет седловую точку Aij, если Aij является минимальным элементом в i-й строке и максимальным в j-м столбце.
Код ужасный и абсолютно не работоспособный
(
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
int count(int **a, const int n, const int m);
int sed(int **a, const int n, const int m);
int main()
{
setlocale(LC_ALL, "rus");
srand(time(0));
const int n = 6, m = 5;
int **a = new int*[n];
for (int i = 0; i < n; i++)
a[i] = new int[n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
a[i][j] = rand() % 20 - 10;
cout << setw(5) << "Массив: " << a[i][j] << endl;
}
cout << endl;
}
if (!cin.fail()){
cout << "Количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент: " << count(**a, n, m) << endl;
cout << "Номера строки и столбцов седловых точек матрицы: " << sed(**a, n, m);
}
else
cout << "Ошибка ввода!" << endl;
system("pause");
return 0;
}
int count(int **a, const int n, const int m)
{
int s = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
if (a[i][j] == 0)
{
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
if (a[i][j] < 0)
s++;
}
}
}
return s;
}
int sed(int **a, const int n, const int m)
{
int s;
int min = 0;
int max = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
if (a[i][j] < min)
{
min = a[i][j];
for (int j = 0; j < n; j++)
for (int i = 0; i < m; i++)
{
if (a[j][i] > max)
{
max = a[j][i];
if (min = max)
s = min;
}
}
}
}
return s;
}
|
Помогите пожалуйста!!! | |
|
|