
Программа С++ Задан числовой массив А[1:m, 1:n]. Составить программу поиска элемента массива,
который является одновременно наименьшим в строке и наибольшим в своем столбце. Вывести номер столбца и строки, если такой элемент есть и 0 если нет.

Ответы на вопрос

#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
int a[n][m];
int minA[m];
int min;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
a[i][j] = rand()% 50 - 10;
cout<<a[i][j]<<" ";
}
cout<<endl;
}
cout <<"Min:"<<endl;
for(int j = 0; j < m; j++){
min = 9999;
for(int i = 0; i < n; i++){
if((a[i][j] > 0) && (a[i][j] < min))
min = a[i][j];
}
minA[j] = min;
cout<<minA[j]<<" ";
}
int max = minA[0];
for(int j = 1; j < m; j++){
if(max < minA[j])
max = minA[j];
}
cout<<endl<<"Max = "<<max;
return 0;
}



Для решения данной задачи можно использовать следующий алгоритм:
- Объявить массив А[1:m, 1:n] и заполнить его случайными числами.
- Объявить переменные для хранения номера строки и столбца найденного элемента, а также для хранения значения элемента.
- Найти элемент массива, который является наименьшим в своей строке.
- Для каждого столбца проверить найденный элемент на то, является ли он наибольшим в столбце. Если да, то запомнить номер столбца.
- Если элемент был найден, вывести номер строки и столбца, иначе вывести 0.
Вот как может выглядеть реализация данного алгоритма на языке C++:
c++#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int MAX_SIZE = 100;
int main()
{
int A[MAX_SIZE][MAX_SIZE];
int m, n;
int row, col, value;
bool found = false;
srand(time(NULL));
cout << "Enter number of rows (m <= " << MAX_SIZE << "): ";
cin >> m;
cout << "Enter number of columns (n <= " << MAX_SIZE << "): ";
cin >> n;
// Заполнение массива случайными числами
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
A[i][j] = rand() % 100;
cout << A[i][j] << " ";
}
cout << endl;
}
// Поиск элемента
for (int i = 0; i < m; i++) {
int min_in_row = A[i][0];
int col_max = 0;
for (int j = 1; j < n; j++) {
if (A[i][j] < min_in_row) {
min_in_row = A[i][j];
}
}
for (int j = 0; j < n; j++) {
if (A[i][j] == min_in_row) {
bool is_max_in_col = true;
for (int k = 0; k < m; k++) {
if (A[k][j] > min_in_row) {
is_max_in_col = false;
break;
}
}
if (is_max_in_col) {
found = true;
row = i + 1;
col = j + 1;
value = min_in_row;
break;
}
}
}
if (found) {
break;
}
}
// Вывод результата
if (found) {
cout << "Found value: " << value << endl;
cout << "Row: " << row << endl;
cout << "Column: " << col << endl;
} else {
cout << "Value not found" << endl;
}
return 0;
}
Здесь используется функция rand() из библиотеки <cstdlib>, чтобы заполнить массив случайными числами. Для ген


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili