Сформировать двумерный целочисленный массив, используя генератор случайных чисел на интервале - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д