Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Матрица

Автор: Виталик 17.01.2004 18:55

Пожалуйста помогите решить задачу(это вопрос жизни или смерти):вводится натуральное число n(1<=n<=10);пронумеровать
клетки квадратной матрицы n*n челночным ходом по диагоналям.
Например для n=4:
                                1   2   6   7
                                3   5   8   13
                                4   9   12 14
                                10 11 15 16  

Автор: dushik 1.02.2004 16:11

Я решал похожую задачу, вот:

Код

program matrix;
uses crt;
var i,j,nom,dio,dios:byte;
zad:integer;
mat:array [1..25,1..25] of byte;
begin
  clrscr;
  textcolor(white);
  writeln('vvedite zadergku vivoda matrizi');
  readln(zad);
  clrscr;
  randomize;
  textcolor(green);
  for i:=1 to 20 do
   begin
     for j:=1 to 20 do
      begin
      mat[i,j]:=random(10);
      end;
   end;
  dios:=0;
  for i:=20 downto 1 do
   begin
     dios:=dios+1;
     dio:=dios;
      if (i mod 2)<>0 then
      begin
      dio:=20;
      for j:=i downto 1 do
     begin
       gotoxy(j,dio);
       write(mat[dio,j]);
       delay(zad);
       dio:=dio-1;
     end;
     end
     else
     for j:=1 to i do
      begin
      gotoxy(j,dio);
      write(mat[dio,j]);
      delay(zad);
      dio:=dio+1;
      end;
   end;
{} dios:=0;
  for i:=20 downto 1 do
   begin
     dios:=dios+1;
     dio:=dios;
      if (i mod 2)=0 then
      begin
      dio:=20;
      for j:=i downto 1 do
     begin
       gotoxy(dio,j);
       write(mat[j,dio]);
       delay(zad);
       dio:=dio-1;
     end;
     end
     else
     for j:=1 to i do
      begin
      gotoxy(dio,j);
      write(mat[j,dio]);
      delay(zad);
      dio:=dio+1;
      end;
   end;
end.

Автор: tricker 1.02.2004 17:12

Код
program lat_kv;
uses crt;
var a:array[1..100,1..100] of integer;
   i,j,n:integer;
begin
clrscr;
write('Введите размер ');
readln(n);
 for i:=1 to n do
  for j:=1 to n do
  begin
   a[i,j]:=j+i-1;
    if a[i,j]>n then a[i,j]:=a[i,j]-n;
  end;
 for i:=1 to n do
  begin
   for j:=1 to n do
    write(a[i,j],' ');
    writeln;
  end;
readln;
end.