Стандартные операции с матрицами - Pascal

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

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

Очень прошу, помогите, кто чем сможет) буду очень благодарна... Написать программы и если можно, без функций и процедур 1 задание: заполнить матрицу целыми числами по образцу: Код заполнения матрицы нашла, но с процедурой, помогите написать без процедуры..
Const
    N = 5;
Var
    A:Array[1..20,1..20] Of Integer;
    k,x,y,Num:integer;
  
Procedure Check(Var i,j:Integer);
    Begin
      If i = 0 Then i:=i+1
        Else
          If i > N Then
            Begin
              i:= N;
              j:= j+2;
            End;
    End;  
Begin
    x:=1;
    y:=1;
    k:=1;
    For Num:=1 To N*N Do
        Begin
            A[x,y]:=Num;
            x:=x + k;
            y:=y - k;
        k:=k*(1 - 2*Ord((x = 0)Or(y = 0)Or(x > N)Or(y > N)));
        If Odd(N) Then
            Begin
                Check(x,y);
                Check(y,x);
            End
                Else
            Begin
                Check(y,x);
                Check(x,y);
            End;
        End;
    For x:=1 To N Do
        Begin
            For y:=1 To N Do
                Write(a[x,y]:3);
            WriteLn;
        End;
    ReadLn;
End.
2 задание: Последний отрицательный элемент каждого столбца двумерного массива заменить нулем.

Решение задачи: «Стандартные операции с матрицами»

textual
Листинг программы
const n=5;
var a:array[1..n,1..n] of integer;
    k,x,y,num:integer;
begin
x:=1;
y:=1;
k:=1;
for num:=1 to n*n do
 begin
  a[x,y]:=num;
  x:=x + k;
  y:=y - k;
  if (x = 0)or(y = 0)or(x > n)or(y > n) then k:=-k;
  if odd(n) then
   begin
    if x = 0 then x:=x+1
    else if x > n then
     begin
      x:=n;
      y:=y+2;
     end;
    if y = 0 then y:=y+1
    else if y > n then
     begin
      y:=n;
      x:=x+2;
     end;
   end
  else
   begin
    if y = 0 then y:=y+1
    else if y > n then
     begin
      y:=n;
      x:=x+2;
     end;
    if x = 0 then x:=x+1
    else if x > n then
     begin
      x:=n;
      y:=y+2;
     end;
   end;
  end;
for x:=1 to n do
 begin
  for y:=1 to n do
  write(a[x,y]:3);
  writeLn;
 end;
end.

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

  1. Объявляются переменные: n, a, k, x, y, num, x, y, k, num.
  2. Вычисляется значение переменной x, y, k.
  3. Заполняется матрица a значениями от 1 до n*n.
  4. Если x или y становятся равными нулю или больше n, то значение k меняется на -k.
  5. Если n нечетное, то при x=0 x увеличивается на 1, иначе x остается неизменным. Аналогично для y.
  6. Если y становится равным нулю или больше n, то значение k меняется на -k.
  7. Если n четное, то при x=0 x увеличивается на 2, иначе x остается неизменным. Аналогично для y.
  8. Выводится матрица a с помощью функции write.
  9. Выводится символ новой строки с помощью функции writeLn.
  10. Цикл for завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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