Writeln('Кількість елементів, що не змінили місця ' ,count) ;
Readkey;
End.
ЗАДАЧА №342(1)
Умова: Дано натуральне число п та послідовність дійсних чисел а1, а2 ... ап. Визначити усі числа, що входять у послідовність по 1-му разу.
Розв 'язання: Пошук чисел, що входять у послідовність по одному разу, виконати важко, тому що для цього необхідно порівняти кожне число з кожним. Набагато простіше зробити це у відсортованому масиві, оскільки однакові числа в ньому будуть розташовані поруч. Тобто пропонуємо в даній задачі спочатку відсортувати масив (метод сортування будь-який, наприклад, «бульбашка»), а потім зробити по ньому прохід, порівнюючи сусідні елементи. Якщо вони не рівні, виконуємо підрахунок. Загальна кількість чисел, що входять у послідовність по одному разу, буде на одиницю більша, ніж отримане число в лічильнику.
Program Example_342_l ;
Uses crt;
Const N = 100;
Type Masiv = array[1..N] of real;
Var A:Masiv; {A — масив для вихідної послідовності}
і,j,count:byte; {і,j - змінні циклу, count - кількість елементів, що входять у послідовність один раз}
k: integer; {к - змінна, що коригує праву границю сортування}
Flag:Boolean; {Flag - змінна, що фіксує, чи була перестановка}
Begin
Randomize;
Clrscr;
For i:=1 to N do
Begin
A[i]:=random(300)/ll-random*15;
Write(A[i]:8:2);
End;
k:=1;
Repeat
Flag:=false;
For i:=1 to N-k do
Begin If A[i]<A[i+l] then
begin {Обмін елементів масиву через третю змінну}
Rez:=A[i]; А[і]:=А[і+1]; A[i+1]:=Rez;
Flag:=true;
end;
k:=k-1;
End;
Until Flag = false;
count:=0;
For i:=1 to N-1 do
Begin If A[i]OA[i+l] then count: =count+1; End;
count:=count+l;
Writeln;
Write ('Кількість елементів, що входять у послідовність 1 paз ') ;