Как найти ближайшее число в массиве python
Перейти к содержимому

Как найти ближайшее число в массиве python

  • автор:

Нужно найти ближайшее из двух чисел к заданному числу на Python.

Дано 3 числа. Для примера x,y,z. Надо написать программу, которая определит, какое из чисел x или y ближе к числу z.
Заранее спасибо.

Лучший ответ
if abs(z-x)>abs(z-y):
print(«Y!»)
elif abs(z-x)print(«X!»)
else print(«nope»)
R31N HDЗнаток (255) 7 лет назад
Прям вот от души огромнейшее спасибо.
Остальные ответы

ЗАГОНИ ПЕРЕМЕННЫЕ В МАССИВ И ПРОВЕРЬ УСЛОВИЕ ЧЕРЕЗ ИНДЕКСЫ МАССИВА, ТИП ИЗ ИНДЕКСА Z ВЫЧИТАЕМ ИНДЕКС X ИЛИ Y ЧИСЛО ИНДЕКСА ПОЛУЧИВШЕЕСЯ НАИБОЛЬШИМ И ОПРЕДЕЛИТ КАКАЯ ПЕРЕМЕННАЯ БЛИЖЕ

Похожие вопросы
Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Решение задачи Ближайшее число с Mccme

Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу.

Код

Скопировать код

#include using namespace std; int main() < int n, t, k = 0, res, idx; cin >> n; vector a(n); for(int i = 0; i < n; ++i) cin >> a[i]; cin >> t; res = abs(t - a[0]); idx = a[0]; for(int i = 1; i < a.size(); ++i)< if(abs(t - a[i]) < res)< res = abs(t - a[i]); idx = a[i]; >> cout
&nbsp &nbsp &nbsp &nbsp &nbsp

Автор: Администратор

Python ФКН: 10) Линейный поиск

Заведем переменную count (не забудем обнулить), которая будет хранить кол-во элементов равных x. Затем проходим циклом от 1 до n и если очередное значение равно x — увеличиваем переменную count на 1.

Напишите программу, которая определяет, сколько раз встречается заданное число x в данном массиве.
Входные данные

В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива. Во второй строке вводятся N чисел – элементы массива (целые числа, не превосходящие по модулю 1000). В третьей строке содержится одно целое число x , не превосходящее по модулю 1000.

Как найти ближайшее число в массиве python

А вот 4 — это b[2].

Можно, например, так:
Алгоритм (в общем случае, когда списки не отсортированы):

1. В цикле по i до len(a1) # смотрим все элементы списка a1 2. blig = 0 # номер ближайшего (предварительный) 2а. delta = abs(a1[i] - b1[blig]) # расстояние (предварительное) 3. В цикле по j от 1 до len(b1) # Среди всех элементов списка b1 4. Если abs(a1[i] - b1[j]) < delta # ищем ближайшее число по модулю 4a. blig = j # номер ближайшего (уточнённый) 4b. delta = abs(a1[i] - b1[j]) # расстояние (уточнённое) 5. Конец цикла по j 6. Вывод: print(a1[i], ' - ближайшее ', b1[blig]) 7. Конец цикла по i

PS: Не проверял.
Если условие такое,

abs(a1[i] - b1[j]) < delta

то это первое ближайшее при просмотре слева направо, иначе

abs(a1[i] - b1[j]) 

то последнее
Пользователь
Регистрация: 11.09.2022
Сообщений: 10
потому что 1.12,1.25 ближайшее для них 2, а 3.1-ближайшее 4
на выходе 2,2,4 # результат
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833

Странно. Мне почему то кажется, что ближайшее к 3.1 это 3, а не 4.
Тогда формулируйте правильно - вам надо округлять в большую сторону

Пользователь
Регистрация: 11.09.2022
Сообщений: 10
да, извиняюсь в большую
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
Сообщение от ViktorR

1. В цикле по i до len(a1) # смотрим все элементы списка a1 2. blig = 0 # номер ближайшего (предварительный) 2а. delta = abs(a1[i] - b1[blig]) # расстояние (предварительное) 3. В цикле по j от 1 до len(b1) # Среди всех элементов списка b1 4. Если abs(a1[i] - b1[j]) < delta # ищем ближайшее число по модулю 4a. blig = j # номер ближайшего (уточнённый) 4b. delta = abs(a1[i] - b1[j]) # расстояние (уточнённое) 5. Конец цикла по j 6. Вывод: print(a1[i], ' - ближайшее ', b1[blig]) 7. Конец цикла по i

Достаточно убрать abs
Пользователь
Регистрация: 11.09.2022
Сообщений: 10

Никогда нельзя думать, что ты лучший в своём деле. . - не качество, а препятствие на пути к успеху(ViktorR можно по понятному, а не . )

Регистрация: 23.10.2010
Сообщений: 2,287

А зачем вам это надо?
Я не программист. Просто описал алгоритм.
Кое что подсмотрел в Сети.
Что у вас не получается?
Вот ваши списки.

a1 = [1.12,1.25,3.1] b1 = [2,3,4,5] # Так можно записать цикл: for i in range(len(a1)): # формируется набор чисел от 0 до len(a1) - длина списка blig = 0 # Номер первого элемента для сравнения delta = a1[i] - b1[blig] # Вычисляем расстояние между числом первого списка и второго списка for j in range(1, len(b1)): # Номера элементов второго списка. От 1 т.к. 0 уже использовали if (a1[i] - b1[j] < delta # Новое расстояние может быть меньше найденного на # предыдущем шаге blig = j # Сохраним номер и delta = a1[i] - b1[j] # найденное расстояние на этом шаге print('Тут надо выводить результат' ' Возможно это вы сделаете сами')

PS: Набирал в форме ввода и не проверял. Так же не смотрел и результат.
И да, если не прилагать усилий, то рыбку будут кушать другие .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *