Обход матрицы - Pascal

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

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

Помогите пожалуйста, пришлите если можете свою работу. или скажите, в чем ошибка Дана матрица A[N,N] из целых чисел (N<=10) . Обойти матрицу в следующем порядке: Началом является элемент A[N,1] следую движение вправо, потом параллельно основной диагонали движение вверх до края таблицы, и опять парралельно основной диагонали вниз до края таблицы и т.д до достижения последнего не пройденного элемента A[1,N] допустим ввели 4
 1  2  3  4
 5  6  7  8
 9 10 11 12
13 14 15 16
вывод 13 14 9 5 10 15 16 11 6 1 2 7 12 8 3 4 получается вывод змейкой я сделал наброски, но там ошибка, которую я не понял. это обход до последнего элемента, то есть 1/2 моей задумки, а когда скомпилировал, пригорело
Program p2;
Type Vector=array [1..10] of integer;
Matrix=array[1..10] of Vector;
var m:Matrix;
n,i,j:integer;
max:boolean;
 
begin
writeln('Введи размерность N-ой матрицы:');
readln(n);
i:=1;
j:=1;
m[i][j]:=1;
for i:=1 to n do begin
for j:=1 to n do
begin
m[i][j]:=m[i][j]+1;
end;
end; 

j:=1;
i:=n;
writeln(m[n][j]);
repeat
if (n=i) and (n=j+1) then 
begin
j:=j+1;
writeln(' ',m[i][j]);
max:=true;
end
else
begin
j:=j+1;
writeln(' ',m[i][j]);
end;
writeln(' ',m[i][j]);
while(j=1) do
begin
i:=i-1;
j:=j-1;
writeln(' ',m[i][j]);
end;
i:=i-1;
writeln(' ',m[i][j]);
while(i=n) do
begin
i:=i+1;
j:=j+1;
writeln(' ',m[i][j]);
end;
until max=true;
readln();
end.

Решение задачи: «Обход матрицы»

textual
Листинг программы
const nmax=10;
var a:array[1..nmax,1..nmax]of integer;
    n,i,j,k,l:integer;
begin
repeat
write('Размер матрицы от 2 до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=(i-1)*n+j;
    write(a[i,j]:4);
   end;
  writeln;
 end;
writeln('Вывод по заданному правилу');
k:=0;
for l:=1 to 2*n-1 do
 begin
  if l>n then
   begin
    if odd(l) then
    for i:=1 to 2*n-l do
     begin
      k:=k+1;
      write(a[i,i+l-n]:4);
     end
    else
    for i:=2*n-l downto 1 do
     begin
      k:=k+1;
      write(a[i,i+l-n]:4);
     end
   end
  else if l<=n then
   begin
    if odd(l) then
    for i:=n-l+1 to n do
     begin
      k:=k+1;
      write(a[i,i-n+l]:4);
     end
    else
    for i:=n downto n-l+1 do
     begin
      k:=k+1;
      write(a[i,i-n+l]:4);
     end;
   end;
 end;
end.

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


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

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

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