[algo] łażenie po tablicy "zygzakiem"

witam

jest tablica 20x20, i muszę wymyślić algorytm na przejście jej całej, ale zygzakiem

for ix := 0 to 19 do

      for iy := 0 to 19 do

        rob coś z ix i iy ;)

ten kod, powoduje przejście każdego wiersza od lewej do prawej

a ja potrzebuje co drugi wiersz przechodzić od prawej do lewej (zygzak)

czyli coś jak to:

-> -> -> -> ->

<- <- <- <- <-

-> -> -> -> ->

<- <- <- <- <-

wolałbym aby to była pętla a nie ręczne rozwiązanie

język Delphi

Najprościej chyba zrobić dwie pętle wewnętrzne, jedna odpowiedzialna za wypełnianie “w prawo”, a druga “w lewo”.

kod w c ale chyba poradzisz sobie z przepisaniem na pascala

#include 

#include 



int main(){  


    int tab[20][20] ;

    int i , j;


    for (i = 0 ; i < 20 ;i++)

    for (j = 0 ; j < 20 ;j++)

        tab[i][j] = j;



    int direction = 1;



    for (i = 0 ; i < 20 ;i++){

    if(direction){

        for (j = 0 ; j < 20 ;j++){

            printf("%2i ", tab[i][j]); // tu coś robisz

        } 

        direction = 0 ;

    }else{

        for (j = 19 ; j > -1 ;j--){

            printf("%2i ", tab[i][j]); // tu coś robisz

        } 

        direction = 1 ;    

    }


        printf("\n");

    }    


    return 0;

}

hINDUss , proszę poprawić tytuł tematu, na konkretny, mówiący dokładniej o problemie. W przeciwnym razie temat zostanie usunięty.

Witaj :slight_smile:

W Delphi (Pascalu) będzie to wyglądało mniej więcej tak:

f := 1;

for i:=0 to 19 do

begin

	for j:=0 to 19 do

	begin

		// pobranie elementu :)

		if (f > 0)

			then elem := tab[i, j]

			else elem := tab[i, 19 - j];


		// zrob cos z tym elementem :)

		// .....

	end;

	f := -f;

end;

Flaga f (zwykły integer) decyduje, w którą stronę ma się poruszać kursor w tablicy i zmienia się za każdym obrotem pętli zewnętrznej i. W wykropkowane miejsce możesz wtedy wstawić dowolny kod i to tylko raz (bez zbędnej duplikacji), który “coś zrobi” z daną elem wyciągniętą z tablicy. W przypadku, gdy w zależności od kierunku trzeba wykonać inny kod, przykład kolegi MasterOfPumpets w języku C z powielonym kodem będzie właściwszy. Powodzenia :slight_smile:

Pozdrawiam

SoftMaker.pl