Пользователь вводит последовательность чисел, заканчивающуюся нулем. Найти максимальную длину последовательности одинаковых чисел (например, в последовательности 1 2 1 1 7 7 7 9 – три семерки).
Как и в предыдущем примере, ввод здесь организуется внутри цикла. Только на этот раз нам заранее неизвестно, сколько элементов будет содержать последовательность – нам лишь известно, что она заканчивается цифрой 0. Поэтому воспользуемся циклом while с условием «пока очередной элемент не равен 0».
Чтобы определить максимальную длину последовательности, нам потребуется знать не только текущее число, вводимое пользователем, но и предыдущее, а также текущую максимальную длину последовательности и длину текущей последовательности.
Пример:
var
x: integer; {текущее число, которое вводит пользователь}
xpred: integer; {предыдущее число }
MaxCount: integer; {максимальная длина последовательности}
Count: integer; {текущая длина последовательности}
begin
writeln(‘Введите первое число:’);
readln(x); {считываем первое число }
Count:=1 {инициализируем текущую длину – пока 1 элемент};
MaxCount:=1; { инициализируем максимальную длину – пока 1}
while x<>0 do {пока не ввели 0}
begin
xpred:=x; {последнее число становится предпоследним}
writeln(‘Введите очередное число:’);
readln(x); {считываем очередное число }
if x=xpred then {если последнее число равно предпоследнему}
begin
inc(count); {увеличиваем на единицу длину
текущей последовательности}
if Count>MaxCount then MaxCount:=Count;
{сравниваем длину текущей последовательности с
максимальной длиной}
end
else Count:=1; {если последнее число не совпадает с
предпоследним, то это 1-ый элемент в новой
последовательности}
end;
writeln(‘Максимальное число – ’, Max); {печатаем результат}
end.
Представленный выше исходный текст позволит найти нам решение поставленной задачи. Обратите внимание: здесь нам не потребовался счетчик.
1. С помощью какого цикла лучше всего вычислить факториал числа?
2. С помощью какого цикла лучше всего вычислить сумму по заданной формуле?
3. С помощью какого цикла лучше всего вычислить сумму ряда с заданной точностью?
4. Какой цикл лучше использовать, если известно, что пользователь вводит последовательность чисел, заканчивающуюся цифрой 0?
Как упоминалось ранее, в Паскале существуют скалярные и структурированные типы. К скалярным относятся стандартные типы (целые, вещественные, символьный, логический и адресный) и типы, определяемые пользователем (перечисляемый и интервальный).
Структурированные же типы имеют четыре разновидности: массивы, а также множества, записи и файлы.
В отличие от обычных переменных, массивы позволяют хранить сразу несколько однотипных величин. Подробнее о них будет рассказано далее.