| 
| 
 | Вопрос # 6 331/ вопрос решён / | 
 |  Здравствуйте, уважаемые эксперты!
 Не могу вспомнить простой алгоритм, помогите пожалуйсто!!!!
 Необходимо найти из array integer приблизительное значение к заданному числу!!!
 
|  |   Вопрос задал: Vollmond (статус: Посетитель)Вопрос отправлен: 13 декабря 2012, 17:53
 Состояние вопроса: решён, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 7; последнее сообщение — 29 декабря 2012, 13:37; участников в обсуждении: 6. 
|   | Drinkenz (статус: 1-ый класс), 13 декабря 2012, 17:59 [#1]:Приблизительное это как? Типа ближайшее или равное? Не пойму. |  
|   | Vollmond (статус: Посетитель), 13 декабря 2012, 18:14 [#2]:Приблизительно равное, т.е. дано: 
 10, 15, 20, 25, 30
 
 Найти приблизительное число к "17"
 
 Должно выдать "15"
 |  
|   | 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™ (статус: Доктор наук), 14 декабря 2012, 08:15 [#4]: Цитата (Vollmond): Необходимо найти из array integer приблизительное значение к заданному числу!!! 
 А если таких элементов в массиве больше одного, тогда шо?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Толяныч (статус: 4-ый класс), 14 декабря 2012, 11:42 [#5]:Задачу  надо формулировать внятно. Например : найти в массиве Integer число, максимально близкое по значению к данному. Поскольку индекс массива, соответствующий этому значению, от нас называть никто не требует,то и вопроса нет. |  
|   | 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 (статус: Посетитель), 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: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Решение представлено. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |