Цитата:
Сообщение от qwerty76
Что значит ppk3:=99?
|
Что переменной ppk3 присвоено исходное значение 99.
Вообще программа (точнее, фрагмент) написана не так, чтобы очень. Точнее, очень не очень. Разберёмся.
Как я понял, задача поставлена так. Есть массив из N целых элементов (положительных и отрицательных), причем в нём заведомо нет элемента со значением 99, и требуется найти последний положительный элемент, кратный 3. Прекрасно. Решается, судя по программе, это так. Вводится переменная ppk3, которой присваивается значение 99, и дальше, идя по массиву с конца в начало, мы ищем элемент, удовлетворяющий поставленным условиям (положительный и кратный 3). Найдя таковой, мы присваиваем его значение переменной ppk3, обрываем цикл и выводим найденное значение на экран.
Но возникает вопрос: а если среди элементов массива не найдётся нужного? Тогда программа не сможет выйти из цикла, попытается присвоить индексу массива (i) нулевое или отрицательное значение, и возникнет ошибка выхода за диапазон индексов массива! Чтобы этого избежать, чуть усложним программу:
Код:
i:=N;
ppk3:=99;
repeat
if (A[i]>0) and ((A[i] mod 3)=0) then
ppk3:=A[i]
else
i:=i-1;
until (ppk3<>99) or (i=0);
if ppk3<>99 then
writeln('last positive divisible by 3 element is', ppk3:4)
else
writeln('array contains no positive divisible by 3 elements');
readln
Вот теперь ошибки не возникнет в любом случае.
P.S. И модераторское замечание: не цепляйтесь к чужим темам, создавайте свои!