Pascal ABC. Написать процедуру, которая выводит ** экран первые 3 элемента из массива,...

0 голосов
46 просмотров

Pascal ABC. Написать процедуру, которая выводит на экран первые 3 элемента из массива, которые не равны друг другу.
Или процедуру нахождения 3 максимальных элементов массива, которые не равны друг другу


Информатика (54 баллов) | 46 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Var
m:array[0..1000] of longint;
n,i:longint;

procedure tf; 
var
q,j:longint; 
o:array[1..10] of longint; 
begin 
 write(m[1],' '); 
 q:=1; 
 o[q]:=m[1];
  i:=1;
  while q<>3 do 
  begin 
  i:=i+1; 
  
  if q=1 then
   if m[i]<>o[1] then
    begin
    write(m[i],' ');
    q:=q+1;
    o[q]:=m[i];
    end;
  
   if q=2 then
     if (m[i]<>o[1]) and (m[i]<>o[2]) then
       begin
       write(m[i]);
       q:=q+1;
       end; 
  end;
end;

procedure tm;
var
mk:array[1..10] of longint;
 begin
 for i:=1 to 3 do 
mk[i]:=0;

for i:=1 to n do
 if mk[1]  begin 
  mk[3]:=mk[2]; 
  mk[2]:=mk[1]; 
  mk[1]:=m[i]; 
  end else
 if (mk[2]mk[1]) then 
  begin 
  mk[3]:=mk[2]; 
  mk[2]:=m[i]; 
  end else
 if (mk[3]m[i]) then mk[3]:=m[i];

write(mk[1],' ',mk[2],' ',mk[3]);
 end;

Скорее всего это можно было написать чище и оптимальнее, но вот моё решение на скорую руку 

(1.1k баллов)
0

Процедуре tf это первые три, а tm это три максимальные. Основной блок программы я писать не стал

0

Спасибо