Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/88: Рейтинг темы: голосов - 88, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 22.02.2018
Сообщений: 5

Номер столбца в котором расположен минимальный элемент четвертой строки массива

28.05.2018, 14:34. Показов 16433. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан двумерный массив целых чисел a из n строк и m столбцов. Требуется определитьномерстолбцавкоторомрасположен минимальныйэлементчетвертой строки массива. Если таких элементов несколько, должен быть определён самый первый из них.
Формат входных данных
Первая строка входного файла содержит два натуральных числа n (4 6 n 6 100) и m (1 6 m 6 100) — количество строк и столбцов массива a. Следующие n строк содержат по m целых чисел (|aij|6 1000) — элементы массива a.
Формат выходных данных
Требуется вывести искомый номер столбца.
Примеры
stdin
4 3
1 5 -1
7 -9 2
-4 6 4
4 1 -1

stdout
3
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2018, 14:34
Ответы с готовыми решениями:

Определить номер столбца в котором расположен минимальный элемент четвертой строки массива
Дан двумерный массив целых чисел a из n строк и m столбцов. Требуется определить номер столбца в котором расположен минимальный элемент...

Определить номер столбца массива, в котором расположен минимальный элемент четвертой строки массива
Доброго времени суток, помогите пожалуйста решить задачи по C++ 3)Дан двумерный массив. Определить: a) номер столбца, в котором...

Определить номер столбца, в котором расположен минимальный элемент четвертой строки матрицы
Дан двумерный массив целых чисел a из n строк и m столбцов. Требуется определить номер столбца в котором расположен минимальный элемент...

21
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
06.07.2018, 19:25
ElderOfELders, здравствуйте! Вот решение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <bits/stdc++.h>
 
    using namespace std;
 
int main() {
    int n, m, min, index;
    cout << "Enter a matrix size:\n";
    cout << "n = ";
    cin >> n;
    cout << "m = ";
    cin >> m;
    int** a = new int*[n];
    for (int i = 0; i < n; i++) {
        a[i] = new int[m];
    }
    cout << "Enter a matrix:\n";
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> a[i][j];
        }
    }
    min = *min_element(a[3], a[3] + m);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            if (a[i][j] == min) {
                min = a[i][j];
                index = j;
                break;
            }
        }
    }
    cout << "Target info: " << ++index << "\n";
    for (int i = 0; i < n; i++) {
        delete [] a[i];
    }
    delete [] a;
    system("pause");
    return 0;
}
P.S. Тут не совсем ясно, номер самого первого из них при проходе матрицы по строкам или по столбцам? Я сделал при проходе по строкам, но можно переделать для столбцов.
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
06.07.2018, 19:50
Цитата Сообщение от Fixer_84 Посмотреть сообщение
C++
1
min = *min_element(a[3], a[3] + m); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] == min) { min = a[i][j]; index = j; break; } } }
Зачем весь этот хаос да еще и двойным циклом?

C++
1
2
3
4
5
6
7
int imin = 0;
for (int i=1; i<m; i++)
{
    if (a[3][i] < a[3][imin])
        imin = i;
}
cout << "Col with min value in 4 row: " << imin << endl;
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.07.2018, 19:51
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Тут не совсем ясно, номер самого первого из них при проходе матрицы по строкам или по столбцам? Я сделал при проходе по строкам, но можно переделать для столбцов.
что тут не ясного ?
Цитата Сообщение от ElderOfELders Посмотреть сообщение
минимальный элемент четвертой строки массива
рассматриваем четвёртую строку, идём слева - направо
не ясно другое , где в коде входной файл:
Цитата Сообщение от ElderOfELders Посмотреть сообщение
Первая строка входного файла....
из условия задачи
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
06.07.2018, 19:57
SuperKir, здравствуйте! Да, вы правы. Можно сразу находить. Просто не подумал об этом.

Добавлено через 1 минуту
Цитата Сообщение от Yetty Посмотреть сообщение
что тут не ясного ?
Yetty, здравствуйте! Дело в том, что матрицу можно пробегать не по строкам, а по столбцам и, так как нужно найти первый минимальный элемент, результаты могут отличаться.

Добавлено через 2 минуты
Yetty, насчет входного файла вы правы, не доглядел. Однако, все равно, непонятно, просмотр матрицы будет при проходе слева направо или, все-таки, сверху вниз.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.07.2018, 20:08
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Дело в том, что матрицу можно пробегать не по строкам, а по столбцам и, так как нужно найти первый минимальный элемент, результаты могут отличаться.
Fixer_84, матрицу можно пробегать хоть по строкам хоть по столбцам хоть по диагоналям хоть змейками или ещё как-нибудь. а по условию ищем минимальный элемент четвёртой строки. именно строки (а не матрицы)

т.е. матрицу кроме четвёртой строки вообще не рассматриваем

Добавлено через 7 минут
ищем не минимальный элемент, находящийся в четвёртой строке, а берём четвёртую строку (только её) и ищем в ней минимальный элемент
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
06.07.2018, 20:08
Цитата Сообщение от ElderOfELders Посмотреть сообщение
Если таких элементов несколько, должен быть определён самый первый из них.
Нам, по условию, нужно найти номер столбца, в котором расположен первый минимальный элемент. Так как минимальных элементов в исходной матрице может быть несколько (помимо четвертой строки), то результаты могут отличаться...Я просто понял задание по-другому, не так как ожидалось. Ну что же, бывает. Буду исправляться.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.07.2018, 20:19
Цитата Сообщение от Fixer_84 Посмотреть сообщение
А просто понял задание по-другому, не так как ожидалось. Ну что же, бывает. Буду исправляться.
Давайте ещё на примере:
2 3 4 2 3 4 - минимальный элемент первой строки 2 (первый минимальный находится в первом столбце)
3 4 2 1 1 1 - минимальный элемент второй стоки 1 (первый минимальный находится в четвёртом столбце)
3 4 5 6 7 7 - минимальный элемент третьей строки 3 (находится в первом столбце)
а вот что требуется по условию:
9 7 8 9 8 7 - минимальный элемент четвёртой строки 7 (первый минимальный находится во втором столбце)
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
06.07.2018, 20:21
ElderOfELders, вот исправленный код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <bits/stdc++.h>
 
    using namespace std;
 
int main() {
    ifstream fin("input.txt");
    if (fin) {
        int n, m, min, index;
        fin >> n >> m;
        int** a = new int*[n];
        for (int i = 0; i < n; i++) {
            a[i] = new int[m];
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                fin >> a[i][j];
            }
        }
        min = INT_MAX;
        for (int j = m - 1; j >= 0; j--) {
            if (a[3][j] < min) {
                min = a[3][j];
                index = j;
            }
        }
        cout << "Target info: " << ++index << "\n";
        for (int i = 0; i < n; i++) {
            delete [] a[i];
        }
        delete [] a;
        fin.close();
    } else {
        cout << "No file input.txt found!\n";
    }
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от Yetty Посмотреть сообщение
Давайте ещё на примере:
Yetty, да я понимаю это. Я просто думал что нужно искать минимальный элемент четвертой строки во всей матрице
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.07.2018, 20:30
Fixer_84, скажите почему цикл идёт с конца строки ? разве так Вы найдёте первый минимальный ?
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
06.07.2018, 20:34
Yetty, да. Просто нужно написать
C++
1
if (a[3][j] <= min)
вместо
C++
1
if (a[3][j] < min)
Спасибо, что поправили. Сегодня не мой день
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
06.07.2018, 20:35
Yetty, если заменить
Цитата Сообщение от Fixer_84 Посмотреть сообщение
C++
1
if (a[3][j] < min)
на
C++
1
if (a[3][j] <= min)
то в принципе да

Upd: Опередили)
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.07.2018, 20:46
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Просто нужно написать
Цитата Сообщение от Fixer_84 Посмотреть сообщение
if (a[3][j] <= min)
зачем всё так усложнять ? почему не сделать цикл с начала строки и строгое неравенство ?

Добавлено через 6 минут
вместо:
C++
1
2
3
4
5
6
min = INT_MAX;
        for (int j = m - 1; j >= 0; j--) {
            if (a[3][j] < min) {
                min = a[3][j];
                index = j;
            }
две строки:
C++
1
2
    for (int j = 0; j < m; j++) 
            if (j==0 || a[3][j] < min) {min = a[3][j]; index = j;}
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
06.07.2018, 20:51
Yetty, чтобы знали, что такой подход существует Представьте, что вы считывайте файл и вам нужно найти последнее слово максимальной длины.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.07.2018, 21:54
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Yetty, чтобы знали, что такой подход существует Представьте, что вы считывайте файл и вам нужно найти последнее слово максимальной длины.
В этом случае тоже идём сначала (всё равно все слова проверять) и ставим нестрогое неравенство.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
06.07.2018, 21:56
Цитата Сообщение от Yetty Посмотреть сообщение
В этом случае тоже идём сначала (всё равно все слова проверять) и ставим нестрогое неравенство.
Я имел ввиду, если слов максимальной длины несколько Если мы поставим строгое, то он найдет первое слово максимальной длины, а нам нужно последнее. Это я и хотел показать в случае с матрицей. Просто там мы двигались справа налево.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.07.2018, 22:58
Цитата Сообщение от Fixer_84 Посмотреть сообщение
Я имел ввиду, если слов максимальной длины несколько
так и я про это. повторяюсь:
Цитата Сообщение от Yetty Посмотреть сообщение
В этом случае тоже идём с начала (всё равно все слова проверять) и ставим нестрогое неравенство.
Добавлено через 7 минут
для результата нет никакой разницы идти с начала строки и ставить нестрогое неравенство или идти с конца строки и ставить строгое неравенство. и в том и в другом случае всё равно нужно проходить все элементы строки. но первое как-то логичнее на мой взгляд.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
06.07.2018, 23:03
Согласен.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
06.07.2018, 23:08
Fixer_84, это для задачи такого типа (например поиск последнего максимального) нет разницы. а например для поиска последнего отрицательного, если матрица заполнена случайным образом положительными и отрицательными примерно поровну, тогда да, более производительно начинать поиск с конца строки.

это же относится и к задачам на удаление элементов.
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
06.07.2018, 23:21
Yetty, Конечно, все зависит от условия задачи. Однако здесь, на форуме, задачи редко формулируются полностью и, поэтому, приходится додумывать и задавать вопросы, хотя это, в свою очередь, тоже приносит свои плоды. Лично мне здесь очень помогли исправить многие ошибки, хотя я до сих пор не считаю свой код достаточно хорошим. Нужно постоянно узнавать что-то новое и закреплять пройденный материал на практике.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.07.2018, 23:21
Помогаю со студенческими работами здесь

Найти номер строки и номер столбца, в котором находится минимальный элемент матрицы
Как вывести номер столбца и номер строки? Совсем запутался. Вот код: #include&lt;iostream.h&gt; #include&lt;conio.h&gt; using...

Определить номер столбца матрицы, в котором расположен минимальный элемент четвертой строки
А) Номер столбца, в котором расположен минимальный элемент четвертой строки массива. Если элементов с минимальным значением в этой строке...

Двумерный массив. определить номер столбца, в котором расположен минимальный элемент четвертой строки
Дан двумерный массив определить: номер столбца в котором расположен минимальный элемент четвертой строки массива. Если элементов с...

Определить номер столбца, в котором расположен минимальный элемент третьей строки массива
21 Дан двухмерный массив. Определить номер столбца, в котором расположен минимальный элемент третьей строки массива. Если элементов с...

Определить номер столбца, в котором расположен минимальный элемент третьей строки массива
Дан двухмерный массив. Определить номер столбца, в котором расположен минимальный элемент третьей строки массива. Если элементов с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru