максимальный элемент массива из заданного интервала
Помогите плз! Выбрать в заданной матрице максимальный элемент из заданного интервала! (интервал любой).
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Непонятно, интервала чего?
В рассмотрение не берутся элементы, значения которых не входят в нейкий интервал?
В рассмотрение не берутся элементы, значения которых не входят в нейкий интервал?
Ну да, допустим интервал от -12 до 33 и в этом интервале_найти MAX_элемент_матрицы
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Пусть 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
Что значит found=false??
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
переменная found (по-русски "найден") изначально показывает, что пока не найдено ни одного элемента. Этот флаг помогает
1) внутри цикла отделить событие нахождения первого элемента в интервале, от события нахождения остальных
2) после цикла - определить найдено ли решение вообще.
1) внутри цикла отделить событие нахождения первого элемента в интервале, от события нахождения остальных
2) после цикла - определить найдено ли решение вообще.
Ну если так, тогда
Код: Выделить всё
...
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
It's a long way to the top if you wanna rock'n'roll
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
somewhere, спасибо за испраление.
)(aTaBbl4, строку "i=1: j=2" надо еще убрать... Хотел поначалу while написать и со второго элемента пойти.
)(aTaBbl4, строку "i=1: j=2" надо еще убрать... Хотел поначалу while написать и со второго элемента пойти.
Все_равно_непонятно_вод_прога
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, первый раз об таком слышу... =)
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
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, первый раз об таком слышу... =)
Пропущено две строки, внимательно читайте, а лучше пытайтесь понять алгоритм.ELSE
END IF
END IF
Можно, если предварительно сформировать новый (или использовать этот же) массив, применив к нему фильтр по диапазону значений. А уже потом использовать стандартный поиск максимума. Но данный способ не рационален для этой задачи.И можно ли решить без found = false, первый раз об таком слышу... =)
It's a long way to the top if you wanna rock'n'roll