Delphi tablica (wypisywanie na ukos)

0

Witam mam do napisania programik który będzie wypisywał liczby kolejno wczytane na ukos kwadratowej tablicy począwszy od ostatniego miejsca.Dla zilustrowania taki oto schemat

4 7 8 9 0 - <ort>z tad</ort> wpisywanie 0 9 5 8 6 4 7 7 5 5 4 9 6 6 5 8 7 7 6 8 8 7 9 8 9
8 9 7 6 5 przykladowe liczby
8 7 6 5 4
9 8 7 6 5
9 8 7 6 5

                               http://img64.imageshack.us/img64/9885/schowek1o.jpg tutaj dokladniejszy rysunek
		

tablica ma być kwadratowa tylko mi tak wyszedł szkic.Ponieważ jestem początkujący w programowaniu kompletnie nie wiem jak się do tego zabrać. Bardzo proszę o podpowiedzi i wskazówki.

0

Ja może i jestem noga z matmy, o ile ta tablica i zależnośc skakania niby po ukosie ma coś wspólnego z jakąś
matematyką. Jednak nie mogę za nic powiązać wypisanych przez Ciebie liczb przykładowych z układem tych w
"kwadracie". Najpierw zaczynasz od ostatniej kolumny w pierwszym wierszu później w lewo, później w dół, a
później w prawy dolny róg? Tak ja to widzę, ale nie widzę tutaj możliwosći ustalenia logicznego skakania, bo
ani to nie po skosie. Chyba, że coś źle patrze. Nie wiem na jakiejs zasadzie chcesz skakać po tej tablicy, to i
nie mam pomysłu na kod. Może ktoś inny zobaczy ten przykład i będzie miał pomysł na jakiś, sensowny kod.

0

pierwszy "ukos" ma "pojemnosc" 1, drugi "ukos" ma pojemnosc "2", ... , n-ty ukos ma pojemnosc n. Wiec od m-tej liczby odejmujesz 1, potem 2, potem 3, ... az zostanie Ci mniej, niz masz odjac w danym kroku - i wtedy wiesz juz w ktorym skosie masz to wstawic i na ktorej "pozycji".

Po pierwsze ustal sobie algorytm ktory pozwoli je wpisywac tak "od lewej" (odbicie Twojego kwadratu wzgledem pionowej osi), a potem przerob ustalanie wspolrzednej x w tablicy, tak, zeby to bylo od prawej: newX = (szerokoscTablicy - oldX -1);, gdzie oldX, to X wyliczony "od lewej".

Mam nadzieje, ze zrozumiesz ;)

0

trochu czaje o co chodzi ale może jeszcze jakies podpowiedzi

0

Niestety bez opisu, ale chyba kod mówi sam za siebie ;-)

program Ukos;
const maxk = 5;    (* Tu zmien rozmiary tablicy *)
      maxw = 5;
var Tab: array[1..maxk, 1..maxw] of Integer;
    i, k, w: Integer;
begin
  Writeln('Tablica ', maxk, 'x', maxw);
  for w:= 1 to maxw do begin
    for k:= 1 to maxk do begin
      Tab[k, w]:= k + 10*w;
      Write(Tab[k, w]:3);       (* Dla zobrazowania *)
    end;
    Writeln;
  end;
  Writeln;
  Writeln('Elementy tablicy wypisane na ukos:');
  for i:= maxk downto 1 do begin
    k:= i;
    w:= 1;
    while (k <= maxk) and (w <= maxw) do begin
      Write(Tab[k, w]:3);
      Inc(k);
      Inc(w);
    end;
    {Writeln;}
  end;
  for i:= 2 to maxw do begin
    k:= 1;
    w:= i;
    while (k <= maxk) and (w <= maxw) do begin
      Write(Tab[k, w]:3);
      Inc(k);
      Inc(w);
    end;
    {Writeln;}
  end;
  Readln;
end.

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