Const n=10; var a:array[1..n] of integer; max,min,imax,imin,i:integer; begin Randomize; for i:=1 to n do begin a[i]:=random(51); write(a[i],' '); end; writeln; max:=a[1]; imax:=1; min:=a[1]; imin:=1; for i:=2 to n do begin if a[i]>max then begin max:=a[i]; imax:=i; end; if a[i]<min then begin min:=a[i]; imin:=i; end; end; writeln('max = ',max,' min = ',min); if imax<imin then for i:=imax+1 to imin-1 do a[i]:=a[i]*a[i] else for i:=imin+1 to imax-1 do a[i]:=a[i]*a[i]; for i:=1 to n do write(a[i],' '); writeln; end.
Var A: array [1..10] of integer; i, min, max, imin, imax: integer; Begin for i:=1 to 10 do read(A[i]); min:=A[1]; max:=A[1]; for i:=1 to 10 do begin if A[i] > max then begin max:=A[i]; imax:=i; end; if A[i] < min then begin min:=A[i]; imin:=i; end; end; if imin<imax then for i:=(imin+1) to (imax-1) do A[i]:=sqr(A[i]) else for i:=(imax+1) to (imin-1) do A[i]:=sqr(A[i]); writeln('Максимальное значение: ', max, ', минимальное: ', min); for i:=1 to 10 do write(A[i], ', '); end.
Немного пояснений: по условию, только элементы между минимумом и максимумом возводятся в квадрат, отсюда эти imax-1 и imin+1.
//Школьный вариант с уродливым "пузырьком" //Pascal ABC.NET 3.1 сборка 1256
Const n=10; m=20; z=30;
Var ar1:array[1..n] of integer; ar2:array[1..m] of integer; ar3:array[1..z] of integer; i,k,j:integer; b:boolean;
begin randomize; k:=-1; b:=false; for i:=1 to n do ar1[i]:=random(20); for i:=1 to n-1 do for j:=i+1 to n do if ar1[i]>ar1[j] then swap(ar1[i],ar1[j]); writeln('Array 1:'); for i:=1 to n do write(ar1[i]:4); writeln; for i:=1 to m do ar2[i]:=random(20); for i:=1 to m-1 do for j:=i+1 to m do if ar2[i]>ar2[j] then swap(ar2[i],ar2[j]); writeln('Array 2:'); for i:=1 to m do write(ar2[i]:4); writeln; for i:=1 to z do ar3[i]:=random(20); for i:=1 to z-1 do for j:=i+1 to z do if ar3[i]>ar3[j] then swap(ar3[i],ar3[j]); writeln('Array 3:'); for i:=1 to z do write(ar3[i]:4); for i:=1 to n do begin k:=-1; for j:=1 to m do if ar1[i]=ar2[j] then begin k:=ar1[i]; break; end; if k=-1 then continue; for j:=1 to z do if k=ar3[j] then begin b:=true; break; end; if b=true then break; end; writeln; writeln('Result:'); if b=false then writeln('Нет') else writeln(k); end.
Одно из "быстрых по написанию" решений, не учитывающих фактор наличия упорядоченности массивов. Это разумно: за решение - не та цена, за которую есть смысл составлять и отлаживать эффективный алгоритм поиска по упорядоченным массивам.
// PascalABC.NET 3.1, сборка 1256 от 21.06.2016 begin var x:=ArrRandom(ReadInteger('p='),-20,20).Sorted; var y:=ArrRandom(ReadInteger('q='),-10,15).Sorted; var z:=ArrRandom(ReadInteger('r='),1,18).Sorted; x.Println; y.Println; z.Println; var r:=x.Intersect(y.Intersect(z)); if r.Count=0 then Writeln('Нет общих элементов') else begin Write ('Общие элементы: '); r.Println end end.
var a:array[1..n] of integer;
max,min,imax,imin,i:integer;
begin
Randomize;
for i:=1 to n do begin
a[i]:=random(51);
write(a[i],' ');
end;
writeln;
max:=a[1]; imax:=1;
min:=a[1]; imin:=1;
for i:=2 to n do
begin
if a[i]>max then begin max:=a[i]; imax:=i; end;
if a[i]<min then begin min:=a[i]; imin:=i; end;
end;
writeln('max = ',max,' min = ',min);
if imax<imin
then for i:=imax+1 to imin-1 do a[i]:=a[i]*a[i]
else for i:=imin+1 to imax-1 do a[i]:=a[i]*a[i];
for i:=1 to n do write(a[i],' ');
writeln;
end.
Пример:
26 40 11 16 40 30 16 40 3 25
max = 40 min = 3
26 40 121 256 1600 900 256 1600 3 25