• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Skrypt na robienie choinki

VPS Starter Arubacloud
0 głosów
7,340 wizyt
pytanie zadane 28 lutego 2016 w C i C++ przez adrian28 Użytkownik (540 p.)

Cześć

W szkole nauczyciel zaczął troche basha. Wytłumaczył jak działają pętle, jednak nic nie zrozumiałem (reszta klasy podejrzewam też). Zadał na 6(szóstke) zrobienie skryptu na choinke w konsoli. Tzn. podajemy ile nasza choinka ma mieć wierszów wysokości i w sumie tyle. 

Choinka miała wyglądać tak(jeszcze z jakimiś tam kolorkami, każda gwiazdka inny kolor bo gwiazdki imitują światełka na choince):

 

Nauczyciel podał nam "suchą" wersje z samych gwiazdek jako wzór:


echo "Podaj wysokość choinki: "
read h 

clear

for((i=1;i<=$h;i=$(($i+1)) )); do
	for((j=1;j<=$(($h-$i));j=$(($j+1)) ));do
		echo -n " "
	done
	for((j=1;j<=$(($i*2-1));j=$(($j+1)) ));do
		echo -n "*"
	done
	echo " "
done

 

Wczoraj obejrzałem film Mirosława Zelenta na temat pętli w c++ i w sumie to już rozumiem jak działają. No i pomyślałem żeby spróbować teraz zrobić ten skrypt na choinke. Próbowałem coś zacząć, jednak jak narazie nic nie wychodzi. Tu w tym przykładzie wyżej jest pętla do..for ? Czy takie coś w ogóle istnieje? Czy może jest to pętla for w pętli for? 

Oczywiście nie chce żeby ktoś zrobił to za mnie, a jedynie pomógł mi, lekko nakierował jak powinienem to poprawnie zrobić. A i termin na oddanie pracy minął jakieś 2 miesiące temu, ja jedynie chce wiedzieć jak to się robi. 

 

3 odpowiedzi

0 głosów
odpowiedź 28 lutego 2016 przez Benek Szeryf (90,690 p.)

W tym skrypcie masz nadrzędną pętle for, w której są umieszczone dwie podrzędne (równoprawne) pętle for. W przypadku basha pętla for ma właśnie taką składnię:

for ... 
do
   ...
done

Natomiast chcąc umieścić tę pętlę w jednej linii, musisz pamiętać o średnikach:

for ... ; do ... ; done

Dlatego w powyższym przykładzie występuje średnik przed składową do.

Powyższy skrypt przepisany na C/C++ miałby następującą postać:

for ()
{
   for ()
   {
    ...
   }
   for ()
   {
    ...
   }
   ...
}

Innymi słowy w skrypcie nie ma pętli do ... for, tylko po prostu pętla for, której otwarcie bloku instrukcji odbywa się za pomocą składowej do, a zamknięcie za pomocą składowej done - analogicznie jak w C/C++ robią to nawiasy wąsate {...}.

0 głosów
odpowiedź 28 lutego 2016 przez Ehlert Ekspert (212,630 p.)
Nie wiem co to za język. Wiem natomiast, że choinka to nic innego jak ciąg arytmetyczny an = a1 + (n-1)*r gdzie r = 2;

Robisz dwie pętle for zagnieżdżone w głównej. Jedna rysuje spacje, druga znaki. Do tego flaga bool czy rysować bombki czy łańcuch.
0 głosów
odpowiedź 29 lutego 2016 przez adrian28 Użytkownik (540 p.)

A więc coś tam próbowałem zrobić:

#include <iostream>
using namespace std;

int h;

int main()

{
cout << "Podaj wysokosc choinki: ";
cin >> h;
for (int i=1; i<=h; i++);
{
   for (int z=1; z<=(h-i); z++);
   {
    cout << " "<<endl;
   }
   for (int x=1; x<=(i*(2-1)); x++);
   {
    cout <<"*"<<endl;
   }
   cout<<" "<<endl;
}
return 0;
}

Ale mam taki błąd:

||=== Build: Debug in choinka (compiler: GNU GCC Compiler) ===|
E:\c++\choinka\main.cpp||In function 'int main()':|
E:\c++\choinka\main.cpp|13|error: name lookup of 'i' changed for ISO 'for' scoping [-fpermissive]|
E:\c++\choinka\main.cpp|13|note: (if you use '-fpermissive' G++ will accept your code)|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Błąd w linijce 13. O w tej:

for (int z=1; z<=(h-i); z++);

Poszukałem na internecie i musze wejść w Project -> Build options -> other compiler options -> i tam powinienem niby mieć ten -fpermissive jednak nic takiego tam nie ma, a jedynie -fexceptions

Podobne pytania

0 głosów
1 odpowiedź 7,411 wizyt
pytanie zadane 17 października 2016 w C i C++ przez Kubiaczek007 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 618 wizyt
pytanie zadane 13 lutego 2021 w C i C++ przez Fie Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 6,299 wizyt
pytanie zadane 4 grudnia 2019 w C i C++ przez marzena12345 Użytkownik (770 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...