Сформировать двумерный целочисленный массив, используя генератор случайных чисел на интервале - Pascal

Узнай цену своей работы

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

Здравствуйте! Прошу подправить ошибки ,если не сложно. Задание звучит так: I Сформировать двумерный целочисленный массив П(4 \ S) исиольпц txmeparop случайных чисел на интервале (-7, Элементы массива вывести на экран в виде матрицы. 2. Преобразовать массив I) в одномерный массив К* 1 (олученный массив вынести на экран» 3. Вычислить среднеарифметическое значение нечетных элементов третьей четверти массива К. 4. Определить два наибольших элемента среди ненулевых элементов второй половины массива К. 5. Упорядочить четные но номеру элементы первой четверги одномерного массива по убыванию квадратов значений
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.

Решение задачи: «Сформировать двумерный целочисленный массив, используя генератор случайных чисел на интервале»

textual
Листинг программы
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.

Оцени полезность:

14   голосов , оценка 4.5 из 5
Похожие ответы