Целочисленная квадратная матрица - Pascal (3937)

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

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

1.Дана целочисленная квадратная матрица A(6,6).Найти количество чисел кратных числу k,среди элементов расположенных выше главной диагонали. 2.Выполнить сортировку элементов,расположенных по периметру матрицы A по возрастанию. Программа должна содержать: 1.Ввод данных автоматически или с клавиатуры,по запросу пользователя 2.вывод результатов на монитор.

Решение задачи: «Целочисленная квадратная матрица»

textual
Листинг программы
const n=6;
type mas=array[1..n,1..n] of integer;
var a:mas;
    z,k,kk,
    i,j,ii,jj,
    ki,kj,tmp:integer;
procedure vvod_mas(var x:mas;f:boolean);
var i,j:integer;
begin
 for i:=1 to n do
  for j:=1 to n do
   if f then a[i,j]:=random(100)
        else begin write('a[',i,',',j,']=');readln(a[i,j]) end
end;
procedure viv_mas(x:mas;s:string);
var i,j:integer;
begin
 writeln(s);
 for i:=1 to n do
  begin
   for j:=1 to n do write(a[i,j]:4);
   writeln
  end 
end;
procedure next(i1,j1:integer;var i2,j2:integer);
begin
 if (i1=1)and(j1<n) 
  then begin i2:=1;j2:=j1+1 end
  else
   if (i1>=1)and(i1<n)and(j=n)
    then begin i2:=i1+1;j2:=n end
    else
     if (i1=n)and(j1>1)and(j1<=n)
      then begin i2:=i1;j2:=j1-1 end
      else begin i2:=i1-1;j2:=1 end
end;
begin
 writeln('Как задать массив:');
 repeat
  writeln('1: - автоматически');
  writeln('2: - с клавиатуры');
  readln(z)
 until z in [1,2]; 
 vvod_mas(a,z=1);
 viv_mas(a,'A:');
 write('введите k: ');readln(k);
 kk:=0;
 for i:=1 to n-1 do
  for j:=i+2 to n do
   if a[i,j] mod k = 0 then inc(kk);
 writeln('количество чисел кратных числу ',k,', среди элементов расположенных выше главной диагонали: ',kk);  
 for ki:=1 to 4*(n-1)-1 do
  begin
   i:=1;j:=1;
   for kj:=1 to 4*(n-1)-i do
    begin
     next(i,j,ii,jj);
     if a[i,j]>a[ii,jj]
      then
       begin
        tmp:=a[i,j];a[i,j]:=a[ii,jj];a[ii,jj]:=tmp
       end;
     i:=ii;j:=jj  
    end
  end;  
 viv_mas(a,'сортировка A:');        
end.

Объяснение кода листинга программы

const n = 6; type mas = array[1..n,1..n] of integer; var a: mas; var z, k, kk, i, j, ii, jj, ki, kj, tmp: integer; procedure vvod_mas(var x: mas; f: boolean); var i, j: integer; begin for i := 1 to n do for j := 1 to n do if f then a[i,j] := random(100) else begin write('a[', i, ',', j, '] ='); readln(a[i, j]); end; end; procedure viv_mas(x: mas; s: string); var i, j: integer; begin writeln(s); for i := 1 to n do begin for j := 1 to n do write(a[i, j]: 4); writeln; end; end; procedure next(i1, j1: integer; var i2, j2: integer); begin if (i1 = 1) and (j1 < n) then begin i2 := 1; j2 := j1 + 1; end else if (i1 >= 1) and (i1 < n) and (j = n) then begin i2 := i1 + 1; j2 := n; end else if (i1 = n) and (j1 > 1) and (j1 <= n) then begin i2 := i1; j2 := j1 - 1; end else begin i2 := i1 - 1; j2 := 1; end; end; end; begin writeln('Как задать массив:'); repeat writeln('1: - автоматически'); writeln('2: - с клавиатуры'); readln(z); until z in [1, 2]; vvod_mas(a, z = 1); viv_mas(a, 'A:'); write('введите k: '); readln(k); kk := 0; for i := 1 to n-1 do for j := i+2 to n do if a[i,j] mod k = 0 then inc(kk); writeln('количество чисел кратных числу ',k,', среди элементов расположенных выше главной диагонали: ',kk); for ki := 1 to 4(n-1)-1 do begin i := 1; j := 1; for kj := 1 to 4(n-1)-i do begin next(i, j, ii, jj); if a[i,j] > a[ii,jj] then begin tmp := a[i,j]; a[i,j] := a[ii,jj]; a[ii,jj] := tmp; end; i := ii; j := jj; end; end; viv_mas(a, 'сортировка A:'); end;

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

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