Сформировать двумерный целочисленный массив, используя генератор случайных чисел на интервале - Pascal
Формулировка задачи:
const
N=32; { кратно 4 }
MIN=-7; MAX=8;
var
a: array [0..N-1] of integer;
Y:array[1..32] of integer;
i, j, s, c,k: integer;
begin
Randomize;
Write('A=');
for i:=0 to N-1 do begin
if i mod (N div 4)=0 then WriteLn;
a[i]:=MIN+Random(MAX-MIN+1);
Write(a[i]:4);
end; WriteLn;
writeln('Zadacha 2:');
k:=1;
for i:=1 to 4 do begin
for j:=1 to 8 do begin
Y[k]:=a[i];
Write('Y[',k,']=',Y[k]:2,' ');
inc(k);
end;
end;
writeln('Zadacha 3:');
Write('Ср. арифм. нечетных 3-й четверти: ');
for i:=N div 4 * 2 to N div 4 * 3 - 1 do
if odd(a[i]) then begin
inc(c); inc(s,a[i]);
end;
if c>0 then WriteLn(s/c) else WriteLn('нет подходящих элементов.');
Write('2 наибольших среди ненулевых 2-й половины: ');
for i:=N div 4 * 2 to N-1 do
for j:=N div 4 * 2 to N-i-1 do
if a[j+1]>a[j] then begin
s:=a[j+1]; a[j+1]:=a[j]; a[j]:=s;
end;
c:=0;
for i:=N div 4 * 2 to N-1 do
if a[i]<>0 then begin
Write(a[i]:4); inc(c);
if c=2 then break;
end;
for c:=c to 2 do Write('*':4);
WriteLn;
WriteLn('Четные по номеру 1-й четверти по убыванию квадратов: ');
for i:=0 to N div (4*2)-1 do
for j:=0 to N div (4*2)-i-1 do
if sqr(a[j*2+3])>sqr(a[j*2+1]) then begin
s:=a[j*2+3]; a[j*2+3]:=a[j*2+1]; a[j*2+1]:=s;
end;
for i:=0 to N div (4*2)-1 do Write(a[i*2+1]:4); WriteLn;
end.Решение задачи: «Сформировать двумерный целочисленный массив, используя генератор случайных чисел на интервале»
const
n = -7; //интервал
m = 8;// от -7 до 8
maxRow = 4;
maxCol = 8;
RC = maxRow * maxCol;
type
mas = array [0..RC - 1] of integer;
arr = array [1..maxRow, 1..maxCol] of integer;
var
D: arr;
K: mas;
i, j, c, m1, m2,max: integer;
s: real;
begin
Randomize;
writeln('Задача 1.');
writeln('D=');
for i := 1 to maxRow do
begin
for j := 1 to maxCol do
begin
D[i, j] := n + random(m + m);
write(D[i, j]:3);
end;
writeln;
end;
writeln('Задача 2.');
write('K =');
for i := 0 to RC - 1 do
begin
K[i] := D[(i div maxCol) + 1, (i mod maxCol) + 1];
write(K[i]:3);
end;
writeln;
s := 0;c := 0;
writeln('Задача 3.');
Write('Ср. арифм. нечетных 3-й четверти = ');
for i := RC div 4 * 2 to RC div 4 * 3 - 1 do
if odd(K[i]) then
begin
inc(c);s := s + K[i];
end;
if c = 0 then Writeln('нет подходящих элементов.') else Writeln(s / 4);
writeln('Задача 4.');
m1 := RC div 4 * 2;
m2 := RC div 4 * 2 + 1;
write('2 наибольших среди ненулевых 2-й половины: ');
for i := RC div 4 * 2 + 2 to RC - 1 do
if (K[m1] < K[i]) and (K[i] <> 0) then
m1 := i;
m2 := integer(m1 < m2) + 1;
for i := RC div 4 * 2 + 2 to RC - 1 do
if (K[m2] < K[i]) and (m1 <> i) and (K[i] <> 0) then m2 := i;
writeln(K[m1], ' и ', K[m2]);
writeln('Задача 5.');
WriteLn('Отсортированные по убыванию квадратов четные по номеру элементы 1-й четверти: ');
for i := 0 to RC div 4 - 1 do
for j := i to RC div 4 - 1 do
if ((i+1)mod 2=0) and (sqr(K[i]) < sqr(K[j])) then
begin
max:=K[i];K[i]:=K[j];K[j]:=max;
end;
for i := 0 to RC - 1 do
write(K[i]:3);
end.
Объяснение кода листинга программы
const n = -7; // интервал m = 8; // от -7 до 8 maxRow = 4; maxCol = 8; RC = maxRow maxCol; type mas = array [0..RC — 1] of integer; arr = array [1..maxRow, 1..maxCol] of integer; var D: arr; K: mas; i, j, c, m1, m2,max: integer; s: real; begin Randomize; writeln('Задача 1.'); writeln('D='); for i := 1 to maxRow do begin for j := 1 to maxCol do begin D[i, j] := n + random(m + m); write(D[i, j]:3); end; writeln; end; writeln('Задача 2.'); write('K ='); for i := 0 to RC — 1 do begin K[i] := D[(i div maxCol) + 1, (i mod maxCol) + 1]; write(K[i]:3); end; writeln; s := 0;c := 0; writeln('Задача 3.'); Write('Ср. арифм. нечетных 3-й четверти = '); for i := RC div 4 2 to RC div 4 3 - 1 do begin if odd(K[i]) then begin inc(c);s := s + K[i]; end; if c = 0 then Writeln('нет подходящих элементов.') else Writeln(s / 4); end; writeln('Задача 4.'); m1 := RC div 4 2; m2 := RC div 4 2 + 1; write('2 наибольших среди ненулевых 2-й половины: '); for i := RC div 4 2 + 2 to RC — 1 do begin if (K[m1] < K[i]) and (K[i] <> 0) then begin m1 := i; m2 := integer(m1 < m2) + 1; end; if (K[m2] < K[i]) and (m1 <> i) and (K[i] <> 0) then m2 := i; writeln(K[m1], ' и ', K[m2]); end; writeln('Задача 5.'); WriteLn('Отсортированные по убыванию квадратов четные по номеру элементы 1-й четверти: '); for i := 0 to RC div 4 — 1 do begin for j := i to RC div 4 — 1 do begin if ((i+1)mod 2=0) and (sqr(K[i]) < sqr(K[j])) then begin max:=K[i];K[i]:=K[j];K[j]:=max; end; end; for i := 0 to RC — 1 do begin write(K[i]:3); end; end; end.