Доделать функцию - Pascal ABC

Формулировка задачи:

Function max (integer; x: vector): integer; {сделать для нахождения двух максимальных значений}
   var i,mx1,mx2,mx:integer;
begin
     mx:=-1000;
     for i:=round(n/2)-1  to n+1 do
        if  not odd(i) then 
          if f[i] > mx then mx:=x[i];
     max:=mx;
  end;

Код к задаче: «Доделать функцию - Pascal ABC»

textual
const n=10;
type vector=array[1..n] of integer;
     max2=record
           m1,m2:integer
          end;
var a:vector;
    rez:max2;
    i:integer;
    fl:boolean;
function max(a:vector;var f:boolean):max2;
//если нет двух четных в первой половине массива f=false
var i,j,k:integer; x:max2;
begin
 i:=1;
 for i:=1 to n div 2-1 do //сортируем первую половину массива
  for j:=1 to n div 2-i do
    if a[j]<a[j+1]
     then
      begin
       a[j]:=a[j]+a[j+1];
       a[j+1]:=a[j]-a[j+1];
       a[j]:=a[j]-a[j+1]
      end;
  k:=0;i:=1;f:=true;
  while (k<2)and(i<= n div 2) do
   begin
    if not(odd(a[i]))
     then
      begin
       if k=0 then begin x.m1:=a[i];inc(k) end
              else begin x.m2:=a[i];inc(k) end;
 
      end;
    inc(i)
   end;
  if k<2 then f:=false
         else max:=x
end;
begin
 for i:=1 to n do begin a[i]:=random(21);write(a[i],' ') end;writeln;
 rez:=max(a,fl);
 if fl then writeln(rez.m1,' ',rez.m2)
       else writeln('в первой половине массива нет двух четных')
end.

15   голосов, оценка 3.800 из 5


СОХРАНИТЬ ССЫЛКУ