Fórum Root.cz
		Hlavní témata => Vývoj => Téma založeno: krcek12  10. 05. 2011, 15:36:19
		
			
			- 
				Dobry den,
Chtel bych poprosit o pomoc, zacinam sa programovanim, ale strasne se mi to libi. A chtel jsem poprosit o pomoct se scripem, ktery by mi vykreslil tohle:
$               .
                ..
               ....
             ........
               ....
                ..
                 .
Je to jenom priklad samozrejmne to pak bude ve vetsim, potreubuju pomoct jen to trochu napsat, zkousel jsem jednodusi verzi jeden pulku  
a=H
b=0
while [ $b -lt 10 ]; do
    echo $a
    a=$a" H"
    b=$(( b+1 ))
done
until [ $b -eq 0 ]; do
   a=${a:1}
   echo $a
   b=$((b-1))
done
Dekuju moc vsem za rady.
 
			 
			
			- 
				Pseudozapis:
vykonaj(n,max,delta):
   write ((max-n)/2)*" "
   write n*"."
   if(m<max)
        vykonaj(n+delta,max,delta)
   write ((max-n)/2)*" "
   write n*"."
rekurzia ftw....
			 
			
			- 
				V první řadě nemáš na začátku řádku mezery pro "centrování" - na místě mě napadá hned několik možností řešení (například druhá proměnná s mezerami, mezery i tečky/H v jedné proměnné a záměna znaků...).
Za druhé, v části "while" vypisuješ PŘED zvětšením řetězce - po skončení smyčky je řetězec o " H" delší, než se vypíše - z toho vychází to, že následující řádek je stejně dlouhý.
Pokud jde o samotné zkracování znaků, tam si nejsem úplně jistý, čím to je, ale předpokládám problém ve znaku ukončujícím řetězec. Každopádně {a:2} korektně zkracuje při každém průchodu (a ne při každém druhém, jak máš ty).
Poznámka: Určitě se nauč rekurzivní funkce, ale nespoléhej na ně vždy - uvědom si, že pro každé takové volání se musí vytvořit "podshell", zkopírovat data na zásobník... Lepší je převést problém rekurze na iteraci (tedy za předpokladu, že to jde v rozumném čase a nepovede to k přílišnému zvětšení nároků).
			 
			
			- 
				Ja bych doporucil se programovani naucit na jinem jazyce nez shell/bash. Usetris si do budoucna odbouravani spousty nevhodnych navyku. A prvni kruzky se ti budou taky delat lehceji.
			
 
			
			- 
				 :o
http://forum.root.cz/index.php?topic=2224.msg17527;topicseen#new