Информатика, опубликовано 2018-08-22 22:06:42 by Гость

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

Ответ оставил Гость

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 q3 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;

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

Не нашли ответа?
Если вы не нашли ответа на свой вопрос, или сомневаетесь в его правильности, то можете воспользоваться формой ниже и уточнить решение. Или воспользуйтесь формой поиска и найдите похожие ответы по предмету Информатика.

Форма вопроса доступна на полной версии этой страницы.