Дан массив MAS[1..11]. Найти максимум нечетных элементов массива на четных местах. Отсортировать массив от большего к меньшему- Pascal(Паскаль)

const nmax=11;
var a:array[1..nmax] of integer;
    n,i,j,k:byte;
    mx,x:integer;
begin
clrscr;
randomize;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Массив:');
k:=0;
for i:=1 to n do
 begin
  a[i]:=random(50);
  write(a[i]:4);
  if odd(a[i]) then{если нечетное}
   begin
    k:=k+1;{считаем}
    mx:=a[i];{запоминаем последнее нечетное}
   end;
 end;
writeln;
writeln('Количество нечетных=',k);
writeln;
if k>0 then{если нечетные есть}
 begin
  for i:=1 to n do
  if (a[i]>mx)and odd(a[i]) then mx:=a[i];{находим максимум из них}
  writeln('Максимальный из них=',mx);
 end;
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<a[j] then{сортируем прямым обменом по убыванию}
 begin
  x:=a[i];
  a[i]:=a[j];
  a[j]:=x;
 end;
writeln('Массив отсортирован по убыванию:');
for i:=1 to n do
write(a[i]:4);
readln
end.

Следующий вариант

var mas:array[1..11]of integer;
    i,mx,tmp:integer; f:boolean;
begin
randomize;
mx:=1;
for i:=1 to 11 do
begin
   mas[i]:=random(11)-5;
   if (not odd(i)) then
   if odd(mas[i])and(mas[i]>mas[mx]) then mx:=i;
   write(mas[i]:3);
end;
writeln;
writeln('max=',mas[mx]);
repeat
f:=true;
for i:=1 to 10 do
if mas[i]<mas[i+1] then
begin
   tmp:=mas[i];
   mas[i]:=mas[i+1];
   mas[i+1]:=tmp;
   f:=false;
end;
until f;
writeln('Отсортированный массив:');
for i:=1 to 11 do
write(mas[i]:3);
readln;
end.

Следующий вариант

program zadacha;
uses crt;
var a:array[1..11] of integer;
max,i:integer;
k:integer;
log:boolean;
begin
for i:=1 to 11 do
  begin
  write('a[',i,']=');
  readln(a[i]);
 
  end;
for i:=1 to 11 do
 if ((a[i] mod 2)<>0) and ((i mod 2)=0) then
   begin
   max:=a[i];   //ïåðâûé íå÷åòíûé ýëåìåíò íà ÷åòíîé ïîçèöèè
   break;             //ïðèñâîèëè ìàêñèìó
  end;
  if i=11 then write('Òàêîãî íåò')
  else
  begin
for i:=1 to 11 do
  if ((a[i] mod 2)<>0) and ((i mod 2)=0) then
  if a[i]>max then max:=a[i];
 
writeln('Ìàêñèìàëüíûé íå÷åòíûé ýëåìåíò íà ÷åòíîì ìåñòå ðàâåí ',max);
//ñîðòèðîâêà ìåòîäîì "ïóçûðüêà"
end;
Repeat
log:=true;
for i:=1 to 10 do
if a[i]<a[i+1] then
   begin
   k:=a[i];
   a[i]:=a[i+1];
   a[i+1]:=k;
   log:=false;
   end;
Until log;
writeln;
writeln('Îòñîðòèðîâàííûé ìàññèâ: ');
for i:=1 to 11 do
write(a[i],' ');
end.

Leave a Comment

− 4 = 4