
Дан вещественный массив А[N][М], все элементы которого различны. В каждой строке найти элемент с
наименьшим значением, а затем среди найденных элементов выбрать наибольший. Вывести на экран индексы этого элемента. Написать программу на с++

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

Код
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
double a[n][m];
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
cin >> a[i][j];
int mxi = 0, mxj = 0;
for (int i = 0; i < n; ++i) {
int mnj = 0;
for (int j = 1; j < m; ++j)
if (a[i][j] < a[i][mnj]) mnj = j;
if (a[i][mnj] > a[mxi][mxj]) {
mxi = i;
mxj = mnj;
}
}
cout << (mxi + 1) << " " << (mxj + 1) << endl;
return 0;
}
Тест
Ввод:
4 5
1 2 3 4 5
0 1 2 3 4
0 0 0 0 -1
16 32 28 17 100
Вывод:
4 1
Пояснение:
Минимальные элементы в каждой строке: 1(1;1), 0(2;1), -1(3;5), 16(4;1)
Максимальным среди них является число 16, которое имеет координаты 4 1 (1-индексация).



Для решения этой задачи, нужно обработать каждую строку массива, найти в каждой строке элемент с наименьшим значением, а затем выбрать наибольший из этих наименьших элементов и вывести его индексы. Вот C++ код, который решает данную задачу:
cpp#include <iostream>
#include <vector>
int main() {
int N, M;
std::cout << "Введите количество строк (N): ";
std::cin >> N;
std::cout << "Введите количество столбцов (M): ";
std::cin >> M;
// Создаем и заполняем массив
std::vector<std::vector<double>> A(N, std::vector<double>(M));
std::cout << "Введите элементы массива:" << std::endl;
for (int i = 0; i < N; ++i) {
for (int j = 0; j < M; ++j) {
std::cin >> A[i][j];
}
}
// Находим наименьший элемент в каждой строке
std::vector<double> minElements;
for (int i = 0; i < N; ++i) {
double minElement = A[i][0];
for (int j = 1; j < M; ++j) {
if (A[i][j] < minElement) {
minElement = A[i][j];
}
}
minElements.push_back(minElement);
}
// Находим наибольший из наименьших элементов и его индексы
double maxOfMinElements = minElements[0];
int rowWithMaxOfMinElements = 0;
for (int i = 1; i < N; ++i) {
if (minElements[i] > maxOfMinElements) {
maxOfMinElements = minElements[i];
rowWithMaxOfMinElements = i;
}
}
// Выводим результат
std::cout << "Индексы наибольшего наименьшего элемента: " << rowWithMaxOfMinElements << ", ";
for (int j = 0; j < M; ++j) {
if (A[rowWithMaxOfMinElements][j] == maxOfMinElements) {
std::cout << j << " ";
}
}
return 0;
}
Программа сначала запрашивает у пользователя количество строк (N) и столбцов (M) массива. Затем пользователь вводит элементы массива построчно. После этого программа находит наименьшие элементы в каждой строке и сохраняет их в вектор minElements
. Затем программа находит наибольший элемент из minElements
и выводит его индексы, соответствующие строке и столбцу, на экран.
Обратите внимание, что программа предполагает, что в каждой строке найдется только один элемент с наименьшим значением. Если в строке есть несколько одинаковых наименьших элементов, программа выведет индексы первого из них.


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