Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Rysowanie choinki ze znaków ASCII

Ostatnio zmodyfikowano 2021-10-25 19:05
Autor Wiadomość
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ę:

C/C++
#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;
}
P-69587
jsc
» 2012-11-19 23:32:15
Swoją pętlę rysującą choinkę musisz otoczyć pętlą, która do przechowywania numeru tworzonej choinki.
P-69589
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...
P-69590
jsc
» 2012-11-20 00:04:08
A jak próbowałeś?
P-69591
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ć...
P-69592
jsc
» 2012-11-20 01:16:34
Chodziło mi o coś takiego:
C/C++
#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;
}
P-69594
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...
C/C++
#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?
P-69595
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 :)
P-69697
« 1 » 2
  Strona 1 z 2 Następna strona