krissuu Temat założony przez niniejszego użytkownika |
[C++] Rysowanie choinki ze znaków ASCII » 2012-11-19 22:02:03 Witam. Mam jako zadanie domowe napisanie choinki w c++. Niestety męczę się już nad tym 3 godziny, a jak na razie udało mi się stworzyć tylko zwykłą choinkę... moja ma wygladać tak x xxx x xxx xxxxx x xxx xxxxx xxxxxxx # # #
Czyli składa się ona z oddzielnych choinek. Powyższa jest dla n=3, a dla więcej czyli np n=4 dojdzie jeszcze jeden poziom i jeden #. Wie ktoś jak coś takiego stworzyć bo już nie mam pomysłów. Mój kod na razie wygląda tak, ale buduje on jedną choinkę: #include <iostream> using namespace std; int main() { int n; cout << "Podaj ilosc drzewek, z ktorych ma sie skladac twoja choinka" << endl; cin >> n; for( int i = 1; i <= n; i++ ) { for( int j = 1; j <= n - i; j++ ) { cout << " "; } for( int j = 1; j <= i * 2 - 1; j++ ) { cout << "*"; } cout << endl; } for( int pien = 1; pien <= n; pien++ ) { for( int pien = 1; pien <= n - 1; pien++ ) { cout << " "; } cout << "#\n"; } return 0; }
|
|
jsc |
» 2012-11-19 23:32:15 Swoją pętlę rysującą choinkę musisz otoczyć pętlą, która do przechowywania numeru tworzonej choinki. |
|
krissuu Temat założony przez niniejszego użytkownika |
» 2012-11-20 00:01:08 A można jakoś jaśniej bo nie rozumiem :( Próbowałem już zagnieździć to co mam w jeszcze jednej pętli, ale coś mi nie wychodziło... |
|
jsc |
» 2012-11-20 00:04:08 A jak próbowałeś? |
|
krissuu Temat założony przez niniejszego użytkownika |
» 2012-11-20 00:09:03 Zagnieżdżałem moje pętle rysujące choinkę w jeszcze jednej, ale stwierdziłem, że tym sposobem tego nie zrobię gdyż te choinki mają być różnej wielkości... przynajmniej tak mi się wydaje.. już mi się pomieszało wszystko, a na jutro muszę to zrobić... |
|
jsc |
» 2012-11-20 01:16:34 Chodziło mi o coś takiego: #include <iostream> using namespace std;
int iloscDrzewek;
void rysujRzad( int wielkosc ) { int komorka; for( komorka = 1; komorka <= wielkosc - iloscDrzewek; komorka++ ) { cout << " "; } for( komorka = 1; komorka <= wielkosc * 2 - iloscDrzewek; komorka++ ) { cout << "*"; } cout << endl; }
void rysujChoinke( int ktora ) { for( int biezacyRzad = 1; biezacyRzad <= ktora; biezacyRzad++ ) { rysujRzad( biezacyRzad ); } } int main() { cout << "Podaj ilosc drzewek, z ktorych ma sie skladac twoja choinka" << endl; cin >> iloscDrzewek; int biezacyElement; for( biezacyElement = 1; biezacyElement <= iloscDrzewek; biezacyElement++ ) { rysujChoinke( biezacyElement ); } for( biezacyElement = 1; biezacyElement <= iloscDrzewek; biezacyElement++ ) { cout << "#" << endl; } cin >> iloscDrzewek; return 0; }
|
|
krissuu Temat założony przez niniejszego użytkownika |
» 2012-11-20 01:26:01 Hmm dość skomplikowane to co wkleiłeś, a ja dopiero zaczynam przygodę z c++. Ale wkleiłem to w kompilator i niestety nie rysuje mi poprawnie tego drzewka. Ja teraz wymyśliłem coś takiego tylko nie mogę zrobić żeby kolejne drzewka były o jedno większe... #include <iostream> using namespace std; int main() { int n; cout << "Podaj ilosc drzewek, z ktorych ma sie skladac twoja choinka" << endl; cin >> n; for( int k = 1; k <= n; k++ ) { for( int i = 1; i <= n; i++ ) { for( int j = 1; j <= n - i; j++ ) { cout << " "; } for( int j = 1; j <= i * 2 - 1; j++ ) { cout << "*"; } cout << endl; } } for( int pien = 1; pien <= n; pien++ ) { for( int pien = 1; pien <= n - 1; pien++ ) { cout << " "; } cout << "#\n"; } return 0; }
Ktoś może jeszcze naprowadzi? |
|
crash |
» 2012-11-22 18:11:29 Należy pamiętać, że gwiazdka na samym czubku jest na środku trzech gwiazdek o jeden niżej, te trzy gwiazdki są na środku pięciu gwiazdek znów o jeden niżej, itd.
Niech chojak składa się z trzech części, czyli 3x wywołujemy funkcję rysującą "piramidkę". Użyszkodnik wprowadza wysokość największej piramidki (tej na samym dole), na podstawie wysokości program oblicza długość podstawy ze wzoru: podstawa = (2*wysokość) -1. Dzięki temu podstawa zawsze będzie nieparzysta.
Teraz wykorzystując to, że masz funkcję na piramidę, należy dodać funkcji parametr, który określa przesunięcie jej od lewej strony monitora w taki sposób, by środki wszystkich piramid pokrywały się. Najpierwiej stestuj na jednej piramidzie, czy przesunięcie działa jak człowiek :) |
|
« 1 » 2 |