[pascal] wyświetlanie liczb w ślimaku

0

Witam jak zrobić żeby wyświetlało liczby w ten sposób
12345678910
2122 11
20 12
20 13
191817161514
jak to zrobić dla boków po 10 i tak samo w wężyku
12345678910
2019181716itp.
bo myślałem ale nic nie wymyśliłem z góry thx za odp.

0

Zazwyczj tego nie robię... ale widzę że kolega jutro ma zaliczenie. A niech będzie.

program slimak;

{$APPTYPE CONSOLE}

uses
  SysUtils;


var
  tablica : array of array of integer;
  x, y, spdX, spdY, i, n : integer;
  plik : text;

begin
   spdX := 1;
   spdY := 0;

   Write('Podaj rozmiar tablicy : ');
   Readln(n);
   SetLength(tablica, n, n);

   for y := 0 to n-1 do // zerowanie tablicy
     for x := 0 to n-1 do
      tablica[x,y] := 0;

   x := 0;
   y := 0;

   for i := 1 to n*n do
   begin
       if (x+spdX>n-1)or(y+spdY>n-1)or(x+spdX<0)or(y+spdY<0)or(tablica[x+spdX,y+spdY] <> 0) then  //zderzenie
       begin
         if (spdX=1)and(spdY=0) then
         begin
           spdX := 0;
           spdY := 1;
         end else
         if (spdX=0)and(spdY=1) then
         begin
           spdX := -1;
           spdY := 0;
         end else
         if (spdX=-1)and(spdY=0) then
         begin
           spdX := 0;
           spdY := -1;
         end else
         if (spdX=0)and(spdY=-1) then
         begin
           spdX := 1;
           spdY := 0;
         end;

       end;
      tablica[x,y] := i;   // wpisz wartosc
      x := x + spdX;
      y := y + spdY;
   end;

   // zapisz tablicę do pliku
   assignFile(plik, 'slimak.txt');
   rewrite(plik);
   for y := 0 to n-1 do
   begin
     for x := 0 to n-1 do
      write(plik, tablica[x,y],#9);
     writeln(plik);
   end;
   close(plik);
end.
0

ogromnę dzięki

//nie musiales az dwa razy dziekowac ;) Drugi post wylecial - Pedros

0

W jaki sposób przerobić zamieszony wyżej kod, aby pobierał dwa parametry (ilość kolumn i ilość wierszy), natomiast reszta bez zmian?

0

Takie podstawy, gotowy kod i nie potrafić przerobić. Ręce opadają i
trzeba było chodzić na wykłady chociaż czasami, a nie tylko na piwo.

program slimak;

{$APPTYPE CONSOLE}

var
  Plik : text;
  Tablica : array of array of integer;
  x, y, spdX, spdY, i, n1, n2 : integer;

begin
  spdX := 1;
  spdY := 0;
  Write('Podaj ilosc kolumn: ');
  Readln(n1);
  Write('Podaj ilosc wierszy: ');
  Readln(n2);
  SetLength(tablica, n1, n2);

  for x := 0 to n1 - 1 do
    for y := 0 to n2 - 1 do
      tablica[x, y] := 0;

  x := 0;
  y := 0;

  for i := 1 to n1 * n2 do
  begin
    if (x + spdX > n1 - 1) or (y + spdY > n2 - 1) or (x + spdX < 0) or (y + spdY < 0) or (tablica[x + spdX, y + spdY] <> 0) then //zderzenie
    begin
      if (spdX = 1) and (spdY = 0) then
      begin
        spdX := 0;
        spdY := 1;
      end else
        if (spdX = 0) and (spdY = 1) then
        begin
          spdX := -1;
          spdY := 0;
        end else
          if (spdX = -1) and (spdY = 0) then
          begin
            spdX := 0;
            spdY := -1;
          end else
            if (spdX = 0) and (spdY = -1) then
            begin
              spdX := 1;
              spdY := 0;
            end;

    end;
    tablica[x, y] := i; // wpisz wartosc
    x := x + spdX;
    y := y + spdY;
  end;

   // zapisz tablicę do pliku
  assignFile(plik, 'slimak.txt');
  rewrite(plik);
  for y := 0 to n2 - 1 do
  begin
    for x := 0 to n1 - 1 do
      write(plik, tablica[x, y], #9);
    writeln(plik);
  end;
  close(plik);
end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1