Страница 1 из 2

максимальный элемент массива из заданного интервала

Добавлено: 26 мар 2009, 18:03
)(aTaBbl4
Помогите плз! Выбрать в заданной матрице максимальный элемент из заданного интервала! (интервал любой).

Re: максимальный элемент массива из заданного интервала

Добавлено: 26 мар 2009, 18:21
Naeel Maqsudov
Непонятно, интервала чего?
В рассмотрение не берутся элементы, значения которых не входят в нейкий интервал?

Re: максимальный элемент массива из заданного интервала

Добавлено: 26 мар 2009, 19:50
)(aTaBbl4
Ну да, допустим интервал от -12 до 33 и в этом интервале_найти MAX_элемент_матрицы

Re: максимальный элемент массива из заданного интервала

Добавлено: 27 мар 2009, 00:22
Naeel Maqsudov
Пусть Hi и Lo - границы интервала, N,M-размер, A(i,j) - массив

Код: Выделить всё

...
found=false
i=1: j=2
for i=1 to N: for j=1 to M
  if A(i,j)>=Lo and A(i,j)<=Hi then
    if found then 
      if A(i,j)>Max then Max=A(i,j)
    else
      Max=A(i,j) 
    end if
  end;
next:next
if found then
  print Max
else
  print "Нет чисел принадлежащих данному интервалу"
end if

Re: максимальный элемент массива из заданного интервала

Добавлено: 27 мар 2009, 10:20
)(aTaBbl4
Что значит found=false??

Re: максимальный элемент массива из заданного интервала

Добавлено: 27 мар 2009, 11:41
Naeel Maqsudov
переменная found (по-русски "найден") изначально показывает, что пока не найдено ни одного элемента. Этот флаг помогает
1) внутри цикла отделить событие нахождения первого элемента в интервале, от события нахождения остальных
2) после цикла - определить найдено ли решение вообще.

Re: максимальный элемент массива из заданного интервала

Добавлено: 27 мар 2009, 11:46
somewhere
Ну если так, тогда

Код: Выделить всё

...
found=false
i=1: j=2
for i=1 to N: for j=1 to M
  if A(i,j)>=Lo and A(i,j)<=Hi then
    if found then 
      if A(i,j)>Max then Max=A(i,j)
    else
      Max=A(i,j)
      Found = true 
    end if
  end;
next:next
if found then
  print Max
else
  print "Нет чисел принадлежащих данному интервалу"
end if

Re: максимальный элемент массива из заданного интервала

Добавлено: 27 мар 2009, 11:54
Naeel Maqsudov
somewhere, спасибо за испраление.
)(aTaBbl4, строку "i=1: j=2" надо еще убрать... Хотел поначалу while написать и со второго элемента пойти.

Re: максимальный элемент массива из заданного интервала

Добавлено: 27 мар 2009, 13:09
)(aTaBbl4
Все_равно_непонятно_вод_прога
CLS
DO
INPUT "kol strok"; n
LOOP UNTIL (n >= 2) AND (n <= 15)
DO
INPUT "kol stolbcov"; m
LOOP UNTIL m >= 2 AND m <= 15
DIM a(n, m)
FOR i = 1 TO n
FOR j = 1 TO m
a(i, j) = INT(RND * 100 - 50)
PRINT USING "####"; a(i, j);
NEXT j
PRINT
NEXT i
INPUT "levii interval"; L
INPUT "pravii interval"; R
found = false
i = 1: j = 2
FOR i = 1 TO n: FOR j = 1 TO m
IF a(i, j) >= L AND a(i, j) <= R THEN
IF found THEN
IF a(i, j) > max THEN max = a(i, j)
ELSE
END IF
END IF
NEXT: NEXT
max = a(i, j)
IF found THEN
PRINT max
ELSE
PRINT "max element v intervale"
END IF
И_индекс_вне_диапозона.....
И можно ли решить без found = false, первый раз об таком слышу... =)

Re: максимальный элемент массива из заданного интервала

Добавлено: 27 мар 2009, 13:33
somewhere
ELSE
END IF
END IF
Пропущено две строки, внимательно читайте, а лучше пытайтесь понять алгоритм.
И можно ли решить без found = false, первый раз об таком слышу... =)
Можно, если предварительно сформировать новый (или использовать этот же) массив, применив к нему фильтр по диапазону значений. А уже потом использовать стандартный поиск максимума. Но данный способ не рационален для этой задачи.