Skocz do zawartości

Mały Skrypot W Bash.


Gość PIotr

Rekomendowane odpowiedzi

Witam. Chcialem Was prosic o napisanie mi skryptu ktory bedzie rysowal choinki.

W internecie jest program który tworzy je wedlug wysokosci, potrzebuje nieco inny, a nie umiem tego ogarnac.

 

Jak to ma dzialac?

Choinka sklada sie z 3 warstw.

Uzytkownik podaje szczerokosc górnej warstwy, a program ma w zaleznosci od wyboru generowac, dalszy ciag choinki.

 

Na przykladzie wyboru np. "3" ma to wygladac tak:

 

http://img209.imageshack.us/img209/6366 … dddsds.png

 

 

 

Zaczolem od tego, ze

W pierwszej warstwie petla od n = 1 do W, gdzie W to podana przez uzytkownika szerokosc górnej warstwy.

W drugiej warstwie od 1 do W+1.

W trzeciej warstwie od 1 do W+2.

 

 

 

Z góry dziekuje! Bardzo mi pomozecie!

 

Jesli nei dziala obrazek przedstawie jak to ma wygladac tu :

 

$ ./choinka 3
   *
  * *
 * * *
   *
  * *
 * * *
* * * *
   *
  * *
 * * *
* * * *
* * * * *
$ ./choinka 4
    *
   * *
  * * *
 * * * *
    *
   * *
  * * *
 * * * *
* * * * *
    *
   * *
  * * *
 * * * *
* * * * *
* * * * * *

Edytowane przez WalDo
Edytujemy posty zamiast pisać nowe. Do umieszczania kodu stosujemy znaczniki [code][/code] - nie trzeba wtedy wstawiać obrazków.
Odnośnik do komentarza
Udostępnij na innych stronach

Witam. Chciałem Was prosić o napisanie mi skryptu ktory będzie rysował choinki.

A ja bym chciał, żebyś lekcje odrabiał samodzielnie.

Spróbuj coś sam napisać, pokaż, że chociaż trochę się wysiliłeś a na pewno znajdzie się ktoś kto poprawi Twój kod.

Odnośnik do komentarza
Udostępnij na innych stronach

Bawiłem się troche juz czasu, pare rzeczy jednak mi coś brakuje... :/

 

#!/bin/bash

for (( k=1; k<=$1; k++ )); do

k= 1 do 3

n= 1 do W

n= 1 do W+1.

n= 1 do W+1.

function rysuj_wiersz {

$W $k $n

(3-k) + (W+k-1) - n = W-n+2

"* " do n

echo -n

}

 

 

 

ale własnie na podstawie tego chce się tez nauczyć, więc jak mozna prosze o większą pomoc ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Gość If Only...

Jakoś nie ogarniam Twojego kodu... :rolleyes: Zawsze możesz spróbować inaczej.

#!/bin/bash

row=1
until test $row -gt $1
do
dwg=""
tmp=0
       # początkowe wcięcie...
while test $tmp -lt $[$1-$row]
do
	dwg+=" "
	let tmp+=1		
done
tmp=0
       # gwiazdki...
while test $tmp -lt $[2*$row-1]
do
	if [ `expr $tmp % 2` -eq 0 ]
	then
		dwg+="*"
	else
		dwg+=" "
	fi
	let tmp+=1		
done
       # na ekran...
echo "$dwg"

let row+=1
done

Łatwo dodasz pętlę, by rysować kolejne "gałęzie". Jeśli każda kolejna gałąź ma mieć o jeden wiersz więcej trzeba odpowiednio zmodyfikować warunek w pętli until i w pierwszej pętli while.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...