|
Вопрос # 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: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Решение представлено.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|