Конспект лекций по программированию для начинающих. Гладков В.П. - 153 стр.

UptoLike

Составители: 

155
if max<a[i] then max:=a[i];
s:=0;
for i:=1 to n do
if a[i]=max then s:=s+1;
Сравнив два цикла в приведенном решении, заметим, что их можно объединить
в один, увеличив скорость работы алгоритма.
max:=a[1]; s:=1; { один совпавший с текущим максимальным уже есть, это
a[1]}
for i:=2 to n do
if max<a[i]
then begin {найден новый кандидат на максимум}
max:=a[i];
s:=1
end
else if max=a[i] then s:=s+1.
Пример 11.12. Подсчитать максимальное количество нулевых элементов
одномерного массива, расположенных подряд.
Решение. В этой задаче используется одномерный массив, являющийся
исходной информацией. Обозначим максимальное количество нулевых элементов
через m. Имеющееся количество нулевых элементов в текущей
последовательности будем считать с помощью переменной s. Будем просматривать
массив поэлементно. Если выбранный элемент является нулем, то счетчик s
увеличиваем на 1. Если выбранный элемент не нуль, то счетчик s обнуляем. Затем
сравниваем m
и s и максимальное из них записываем в m. Воспользуемся схемой
перебора по одному от первого к последнему элементу, тогда получим следующий
алгоритм:
{пример 11.12, вариант 1}
m:=0; {нулей пока не обнаружено}
s:=0;
for i:=1 to n do
begin if a[i]=0
then s:=s+1
else s:=0;
if m<s then m:=s
end;
write('максимальное количество нулей, следующих подряд ',m).
Для поиска ошибок в предложенном алгоритме необходимо разработать набор
тестов, чтобы каждая ветка алгоритма была выполнена хотя
бы по разу.
Предлагается следующий набор тестов:
1. n=9, a={1,2,3,4,5,6,7,8,9}. Ответ: максимальное количество нулей, следующих
подряд 0. Начало последовательности 0.
2. n=9, a={0,0,0,0,0,0,0,0,0}. Ответ: максимальное количество нулей, следующих
подряд 9. Начало последовательности 1.
3. n=9, a={0,1,0,0,2,0,0,0,3}. Ответ: максимальное количество нулей, следующих
подряд 3. Начало последовательности 6.
                                       155

       if max