Zdravím, potřeboval bych vysvětlit tento cyklus for pro průchod dvourozměrným polem a poradit jak ho předělat do dvou forů. Děkuji.
Fórum › C / C++
Vysvětlení cyklu for
Uz takhle je docela narocne co ze to sakra dela, kdyz se ti to povede scuknout do dvou, tak v tom bude dokonaly gulas.
Prvni projizdi radek, druhej projizdi diagonalne od radku a sloupce dokud jedno z nich neni 0, treti zase diagonalu dokud sloupec neni na 0 nebo radek neni (asi) posledni. Cele to vrati false, pokud na kterekoliv z tech pozici narazi na nenulovou hodnotu.
#2 KIIV
Špatně jsem se vyjádřil, chápu jak to funguje, ale nechápu takový zápis
a proč mi to nejde mi to nejde zapsat takto.
#3 Thalorn
no je to neco jineho:
// puvodni (radky=2, sloupce=3):
[2][3]
[1][2]
[0][1]
// a tvoje bude delat:
[2][3]
[2][2]
[2][1]
[2][0]
[1][3]
[1][2]
[1][1]
[1][0]
[0][3]
[0][2]
[0][1]
[0][0]
for (pred cyklem ; podminky ; v cyklu)
for (i=0; i<sloupec; i++) {...kod...} se da zapsat jako
i=0;
for(;;)
{
if (i<sloupec) {break;}
...kod...
i++;
}
Ten dalsi
for (i=radek, j=sloupec; i>= && j>=0 ; i--, j--) {...kod...} se da zapsat jako
i = radek;
j = sloupec;
for(;;)
{
if (i>= && j>=0) {break;}
...kod...
i--;
j--;
}
nebo
i = radek;
j = sloupec;
while(i>= && j>=0)
{
...kod...
i--;
j--;
}
Abys to mohl zapsat do jednoho, musis pochopit, co to dela a proc to dela. Coz se z toho kodu vycist neda. Sice tvrdis, ze to vis, ale nenapsal jsi to. Takze je lepsi predpokladat, ze mas mizivou nebo uplne mylnou predstavu.
kdyz zadas radek = 3, sloupec = 5, deska = 7 tak
cyklus 1: [3,0] [3,1] [3,2] [3,3] [3,4] - zkontroluje sloupec od 0
cyklus 2: [3,5] [2,4] [1,3] [0,2] - zkontroluje diagonalu od konce
cyklus 3: [3,5] [4,4] [5,3] [6,2] - zkontroluje netusim co, asi vzdalenost od okraje
Pokud je arr[i,j]==0 nebo =='' nebo ==false nebo ==undefined cykly se prerusi na false. Cili, bud souradnice neexistuje nebo je tam false nebo prazdny text nebo nula. Nejspis vsechna pole zacinaji nulou, takze to u prvniho cyklu nemuze nastat. Ale mohlo by to nastat, pokud zadany radek nebo sloupec nebo oboje neexistuje.
Ty cykly lze spojit dohromady pouze za nekolika podminek, jinak vubec. azdy dela totiz uplne jinou vec. Takze, zkus nam nejdriv rici, jake cisla muzou byt v radek = x, sloupec = y, deska = z a jak vypada to pole.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Vysvětlení cyklu — založil Jarda
Vysvětlení backtrace — založil Tassadar
Vysvětlení pojmů — založil Venca
Vysvětlení zadání — založil Adam
Vysvetleni syntaxe — založil radecek88
Moderátoři diskuze