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

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

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

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

Naeel Maqsudov » 27 мар 2009, 15:39

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

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
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
      Max = A(i, j)
      found = true
    END IF
  END IF
NEXT: NEXT

IF found THEN
  PRINT Max
ELSE
  PRINT "gggg"
END IF
Чтобы каждый Next нашел свой For используйте отступы

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

)(aTaBbl4 » 27 мар 2009, 15:25

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
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
Max = A(i, j)
found = true
END IF
END;
NEXT: NEXT
IF found THEN
PRINT Max
ELSE
PRINT "gggg"
END IF

ПИШЕТ next без for.....
И еще почему в 7 строчке снизу end и потом ;...

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

somewhere » 27 мар 2009, 13:33

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

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

)(aTaBbl4 » 27 мар 2009, 13:09

Все_равно_непонятно_вод_прога
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: максимальный элемент массива из заданного интервала

Naeel Maqsudov » 27 мар 2009, 11:54

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

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

somewhere » 27 мар 2009, 11:46

Ну если так, тогда

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

...
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: максимальный элемент массива из заданного интервала

Naeel Maqsudov » 27 мар 2009, 11:41

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

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

)(aTaBbl4 » 27 мар 2009, 10:20

Что значит found=false??

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

Naeel Maqsudov » 27 мар 2009, 00:22

Пусть 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: максимальный элемент массива из заданного интервала

)(aTaBbl4 » 26 мар 2009, 19:50

Ну да, допустим интервал от -12 до 33 и в этом интервале_найти MAX_элемент_матрицы

Вернуться к началу