Дан
массив x: array [1..n] of integer, причём x[1]<=x[2]<=...<=
x[n]. Найти количество различных
чисел среди элементов этого массива.
Решение. (1 вариант)
i := 1; k := 1;
{инвариант: k - количество различных
чисел среди x[1]..x[i]}
while i <> n do begin
| i := i + 1;
| if x[i] <> x[i-1] then
begin
| | k := k + 1;
| end;
end;
(2 вариант) Искомое число на 1
больше количества тех чисел
i из 1..n-1, для которых x[i] <> x[i+1].
k := 1;
for i := 1 to n-1 do begin
| if x[i]<> x[i+1] then
begin
| | k := k + 1;
| end;
end;