Помогите исправить блок схему

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

PRo9
Сообщения: 17
Зарегистрирован: 17 ноя 2008, 15:24

вот такая вот задача

Дана последовательность неотрицательных чисел последнее из которых равно нулю: причём других равных нулю чисел в последовательности нет. Найти последнее число, большее десяти, в этой последовательности. Если таких чисел нет напечатать ноль.

я написал вроде блок схему, но там запоминает номер числа, а нужно чтоб само число запоминало. Что нужно написать вместо того, что написано в красном кружочке?

Изображение

вот код

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

i:=1; idx10=-1;
while (a[i]<>0) do begin {просматриваем до нуля}
  if a[i]>10 then idx10=i; {если >10, то запоминаем где оно}
  inc(i);
end;
if idx10=-1 
  then writeln('не нашлось чисел > 10')
  else writeln('последнее число >10 (',a[idx10],') найдено в позиции ',idx10);

Помогите. заранее спасибо
airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

замените на idx10=a
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

Блок-схема неправильная. i увеличивается и выход на конец программы. Нет цикла.
PRo9
Сообщения: 17
Зарегистрирован: 17 ноя 2008, 15:24

Albor, А как правильно будет. Нарисуйте если не сложно просто очень надо
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

Рисовать не буду, только подскажу: блок a<>0 должен изображаться ромбом с ответвлениями "ДА", "НЕТ", поскольку это условие цикла. По ветке НЕТ выходим на блок if idx10=-1, который должен быть ромбом - это проверка условия, а по ветке ДА попадаем в блок a>10. Из блока inc(i) рисуем связь на вход блока a<>0 этим образуя цикл. Не забываем за блоки вывода результата, после которых риуем блок конец. Вам осталось чуть-чуть додумать связи блока if idx10=-1. Надеюсь справитесь. Внимательней изучите изображение и назначение элементов блок-схем, ведь без этого нельзя что-либо разумное сотворить.
PRo9
Сообщения: 17
Зарегистрирован: 17 ноя 2008, 15:24

?
1)
Изображение
2)
Изображение
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

1й вариант ещё ничего а второй -вообще бред. ,блок idx10=-1: из него должно быть 2 выхода: ДА - параллелограм с "writeln('не нашлось чисел > 10')", НЕТ - параллелограм с "writeln('последнее число >10 (',a[idx10],') найдено в позиции ',idx10)", выходы обоих идут в блок конец. Ветку из inc(i) рисуем на вход блока a<>0 - то есть сверху - условие a<>0 проверяется на каждой итерации цикла и цикл работает, пока это условие истино. Блок a[idx10] убираем, так как он не производит ни каких действий. На ромбиках не забываем писать ДА и НЕТ, иначе схема непонятна, то есть - в каждом ромбе есть один вход и 2 выхода. Додумай сам, куда отправить ветку НЕТ из блока a>10
PRo9
Сообщения: 17
Зарегистрирован: 17 ноя 2008, 15:24

?
Изображение
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

Красную на вход inc(i)
PRo9
Сообщения: 17
Зарегистрирован: 17 ноя 2008, 15:24

и будет правильно?
Ответить