ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
ÐÑпÑÑк 5 - РоÑÑийÑкий гоÑÑдаÑÑÑвеннÑй пÑоÑеÑÑионалÑно ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ввод массива<br />
Первоначально флаг приравнивается нулю flag := 0;<br />
Цикл перебора элементов массива for i := 1 to 10 do<br />
begin<br />
Если текущий элемент массива равен нулю, то: if mas[i] = 0 then<br />
begin<br />
— значение флага увеличивается на 1; flag := flag+1<br />
— если теперь флаг равен заданному n, то<br />
if flag = n then goto 1;<br />
выполняется безусловный переход на метку 1<br />
Конец ветви then внешнего условного<br />
end<br />
оператора<br />
Конец цикла end;<br />
Если флаг равен n, то выводится номер (индекс) 1: if flag = n<br />
последнего обработанного в цикле элемента, на then writeln('Номер ',n:1,'-го нулевого<br />
котором цикл был прерван. Иначе (если флаг элемента: ',i:2)<br />
равен нулю — ни одного нулевого элемента else writeln('Искомый элемент не найден');<br />
не найдено, или если он меньше n — найдено<br />
меньше нулевых элементов, чем нужно)<br />
выводится сообщение об отсутствии в массиве<br />
такого элемента<br />
Конец программы<br />
end.<br />
Таблица трассировки (для конкретного примера массива):<br />
Строки программы<br />
Значения<br />
переменных<br />
i mas[i] flag<br />
ввод массива<br />
mas[] = (1,0,2,0,3,0,4,0,5,0)<br />
flag := 0; – – 0<br />
for i := 1 to 10 do 1 1 0<br />
if mas[i] = 0 then<br />
текущий элемент — не нулевой: ветвь then пропускается<br />
1 1 0<br />
if mas[i] = 0 then<br />
текущий элемент — нулевой: выполняется ветвь then<br />
2 0 0<br />
flag := flag+1; 2 0 1<br />
if flag = n then goto 1;<br />
значение flag не равно n (трем): ветвь then пропускается<br />
2 0 1<br />
if mas[i] = 0 then<br />
текущий элемент — не нулевой: ветвь then пропускается<br />
3 2 1<br />
if mas[i] = 0 then<br />
текущий элемент — нулевой: выполняется ветвь then<br />
4 0 1<br />
flag := flag+1; 4 0 2<br />
if flag = n then goto 1;<br />
значение flag не равно n (трем): ветвь then пропускается 4 0 2<br />
if mas[i] = 0 then<br />
текущий элемент — не нулевой: ветвь then пропускается<br />
5 3 2<br />
if mas[i] = 0 then<br />
текущий элемент — нулевой: выполняется ветвь then<br />
6 0 2<br />
flag := flag+1; 6 0 3<br />
if flag = n then goto 1;<br />
значение flag равно n (трем): выполняется ветвь then и производится<br />
6 0 3<br />
досрочное прерывание цикла<br />
1: if flag = n<br />
then writeln('Номер ',n:1,'-го нулевого элемента: ',i:2)<br />
else writeln('Искомый элемент не найден'); 6 0 3<br />
flag = 3: выполняется ветвь then — на экран выводится строка<br />
Номер 3-го нулевого элемента: 6<br />
Если по условию задачи требуется лишь определить факт наличия в массиве n-го по счету элемента,<br />
соответствующего заданному условию, то (так же, как и в предыдущей задаче при выяснении<br />
факта наличия первого такого элемента) тоже можно для упрощения программы исключить из<br />
39<br />
май 2012 / ИНФОРМАТИКА