Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 331

/ вопрос решён /

Здравствуйте, уважаемые эксперты!

Не могу вспомнить простой алгоритм, помогите пожалуйсто!!!!
Необходимо найти из array integer приблизительное значение к заданному числу!!!

Vollmond Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Vollmond (статус: Посетитель)
Вопрос отправлен: 13 декабря 2012, 17:53
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 7; последнее сообщение — 29 декабря 2012, 13:37; участников в обсуждении: 6.
Drinkenz

Drinkenz (статус: 1-ый класс), 13 декабря 2012, 17:59 [#1]:

Приблизительное это как? Типа ближайшее или равное? Не пойму.
Vollmond

Vollmond (статус: Посетитель), 13 декабря 2012, 18:14 [#2]:

Приблизительно равное, т.е. дано:

10, 15, 20, 25, 30

Найти приблизительное число к "17"

Должно выдать "15"
Drinkenz

Drinkenz (статус: 1-ый класс), 13 декабря 2012, 18:44 [#3]:

Как-то так наверное
bliz:=0;
for i := 0 to high(a) do
  if a[bliz] > abs( 17 - a[i]) then bliz := i;
min@y™

min@y™ (статус: Доктор наук), 14 декабря 2012, 08:15 [#4]:

Цитата (Vollmond):

Необходимо найти из array integer приблизительное значение к заданному числу!!!


А если таких элементов в массиве больше одного, тогда шо?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Толяныч

Толяныч (статус: 4-ый класс), 14 декабря 2012, 11:42 [#5]:

Задачу надо формулировать внятно. Например : найти в массиве Integer число, максимально близкое по значению к данному. Поскольку индекс массива, соответствующий этому значению, от нас называть никто не требует,то и вопроса нет.
DNK

DNK (статус: Студент), 15 декабря 2012, 16:25 [#6]:

Drinkenz: Позволь поправлю.
bliz:=0;
for i := 1 to high(a) do  // цикл можно начать со 2-го элемента массива 
  if abs(17 - a[bliz]) > abs( 17 - a[i]) then bliz := i;
"Digital Networked Knight"

15 декабря 2012, 16:27: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором DNK

mirt.steelwater

mirt.steelwater (статус: Посетитель), 29 декабря 2012, 13:37 [#7]:

// можно немного оптимизировать
bliz := low(a);
dc_min := abs(17 - a[bliz]);
for i := low(a)+1 to high(a) do
begin
  dc := abs( 17 - a[i]);
  if dc = 0 then
  begin
      bliz := i;
      dc_min := dc;
      break;
  end
  else if dc < dc_min then 
  begin
      bliz := i;
      dc_min := dc;
  end; 
end;
Ⓐ свобода сопротивление солидарность

18 марта 2013, 21:30: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Решение представлено.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 5 июня 2023, 10:36
Выполнено за 0.03 сек.
Рейтинг@Mail.ru