Дан  массив 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;


2009-12-04 • Просмотров [ 2196 ]