@ne_nuzhen

Как найти несколько минимальных чисел в матрице?

Часть кода
min_plus_value = 101
width = 7
lenght = 7
    for i in range(width):
        matrix.append([])
        for j in range(lenght):
            matrix[i].append(random.randint(-100, 100))
            if min_plus_value > matrix[i][j] and matrix[i][j] > 0:
                min_plus_value = matrix[i][j]


В массив задаются случайные числа, нужно найти ближайшее значение к нулю, но проблема в том, что в этом массиве могут быть, например, несколько цифер 1, тогда нужно и их тоже указать, но у меня не получается это сделать, как можно решить данный вопрос?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
Легко. При обходе матрицы формируешь список индексов, где встречался минимум. Тогда:
а) если число больше минимума, не делаем ничего
б) если число равно минимуму, вносим его индексы в список
в) если число меньше минимума, очищаем список. Потом вносим его индексы в список.
Ответ написан
Комментировать
SoreMix
@SoreMix Куратор тега Python
yellow
нужно найти ближайшее значение к нулю

Но в коде вы учитываете только положительные числа, однако в матрице есть отрицательные. -1 будет ближе к нулю, чем 20.
Так что я с модулем сделаю пожалуй. Алгоритм вполне простой, сначала сделал матрицу, потом по каждому числу пробежался, если модуль этого числа меньше, чем модуль ранее найденого минимального числа, то оно будет новым минимальным. Если текущее число совпадает с минимальным, то к кол-ву минимульных плюсуется единица

for i in range(width):
    matrix.append([])
    for j in range(lenght):
        matrix[i].append(random.randint(-100, 100))

minimal_value = 101
minimal_count = 0

for row in matrix:
    for number in row:
        if abs(number) < abs(minimal_value):
            minimal_value = number
            minimal_count = 1
        elif number == minimal_value:
            minimal_count +=1


В итоге в minimal_value - самое близкое число к 0, в minimal_count - сколько раз это число встретилось
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽