Choinka z gwiazdek

0

Witam,

próbuję zaprogramować choinkę z gwiazdek w C++. Niestety nie umiem zrobic pnia choinki (boottom) oraz gwiazdki wypisują się jedna pod droga zamiast łączyć się w nowej lini. Zauważyłem, że w niektorych choinkach są dwie pętle for (pętla w pętli). Przypuszczam, że do zbudowania choinki jest wymagany jeden for (nie licząc pnia choinki, który ma się składać z dwoch gwiazdek jedna pod drugą).

Ogólnie choinka zaczyna się od 5 gwiazdek.

Kod c++:

#include <iostream>

using namespace std;

int main()
{

    int w = 1; // wierzcholek
    int d; // wpisywana liczba giwazdek
    int suma; // suma wszystkich gwiazdek
    int bottom = 2; // dol choinki 2 gwiazdki
    cout << "Podaj liczbe";
    cin >> d; // wpisuje liczbe gwiazdek
    suma = w + bottom + 2; // suma( dol choinki, wierzcholek)
	if(d>=suma) // jesli jest ponad 5 gwiazdek
	{
		for(int wa; wa <= d-2; wa + 2) // dla zmiennej wa dodaje 2 gwiazdki do czasu wszystkich gwiazdek procz bottom
		{
			cout << "*"; // wypisuje gwiazdke 
			cout << endl; // nowa linia
		}
	}
    return 0;
}
0

Jak do zmiennej = 1 dodać 2 i przejsc do nowej lini, dodawac 2 i nowa linia ma byc warunkiem do czasu uzyskania wyniku

0

Mogbly ktos dodac komentarze do kazdej linii kodu?
Najważniejsze komentarze w funkcji void

#include <iostream>

using namespace std;

void choinka(int f, int n)
{

    int k = f + n - 2; 
    for (int z = 0; z < n; ++z) {
        int r = k;
        for (int i = 0; i < z+f; ++i)
        {

            for (int j = 0; j < r; ++j)
            {
                cout << (" ");
            }

            r--;
            for (int j = 0; j < (i * 2) +1; ++j)
            {
                cout << ("X");
            }
            cout << ("\n");
        }
    }
}



int main()
{
    int liczba_poziomow;
    int wysokosc;
    cout << ("x = ");
    cin >> (wysokosc);
    if (wysokosc > 0)
    {
        cout << ("y = ");
        cin >> (liczba_poziomow);
        if (liczba_poziomow > 0)
        {
            choinka(wysokosc, liczba_poziomow);
        }
        else
        {
            cout << "Liczba \"y\" powinna byc wieksza od 0!";
        }
    }
    else
    {
        cout << "Liczba \"x\" powinna byc wieksza od 0!";
    }
    return 0;
}
2

Koszt czasowy komentowania tego badziewia jest jakieś 4 razy wyższy niż napisanie od nowa z komentarzami.
Sądzę że nikomu nie będzie się chciało, tym bardziej że tobie to nic nie da.

4

@_13th_Dragon: Oj nie bądź taki nieuprzejmy, przecież napisanie komentarzy do tego kodu to chwilka ;P

void choinka(int f, int n)
{
  int k = f + n - 2;                             // deklaracja zmiennej k
  for (int z = 0; z < n; ++z) {                  // pętla for
      int r = k;                                 // deklaracja zmiennej r
      for (int i = 0; i < z+f; ++i)              // pętla for
      {
          for (int j = 0; j < r; ++j)            // pętla for
          {
              cout << (" ");                     // wyświetlenie spacji
          }
  
          r--;                                   // postdekrementacja r
          for (int j = 0; j < (i * 2) +1; ++j)   // pętla for
          {
              cout << ("X");                     // wyświetlenie X
          }
          cout << ("\n");                        // wyświetlenie \n
      }
  }
}
0

13th Twój program który zalinkowałeś ma błędy przy kompilacji, chciałem włączyć program żeby coś wyświetlił, niestety nie przydał się jako materiał edukacyjny.

Jaki program mógłbym zaprogramować żebym mógł pytać się o prace jako junior programista?

Słyszałem o grach karcianych, jaka grę proponujecie?

0
Cyber84 napisał(a):

13th Twój program który zalinkowałeś ma błędy przy kompilacji, chciałem włączyć program żeby coś wyświetlił, niestety nie przydał się jako materiał edukacyjny.

Nie pierGol: https://ideone.com/nZxapB

0

Bez tytułu.jpg

Błąd przy kompilacji

3

Poszukaj kompilatora z tego tysiąclecia. To jest poważna rada, nie zgrywam się — auto weszło w C++11 (jako dedukcja typów; jako określenie storage duration istniało już wcześniej), jedenaście lat temu. W komputerowej skali czasu to wieczność.

0
#include <iostream>

using namespace std;

void choinka(int w, int s)
{
	int suma= w + s - 2;
	for(int sa=0;sa<s;sa++)
	{
		int w1=sa;
		int r = suma; // poczatkowe r co robi
		for(int w1=0;w1<w;w1++)
		{
			for(int s1=1;s1<r;s1++) // tutaj co robi r
			{
				cout << (" ");
			}
			r--; // co robi te r
			for(int gw=0;gw<(w1*2)+1;gw++)
			{
				cout << ("X");
			}
				cout << ("\n");
		}
	
	}
}

int main()
{

    int liczba_poziomow;
    int wysokosc;
    cout << ("x = ");
    cin >> (wysokosc);
    if (wysokosc > 0)
    {
        cout << ("y = ");
        cin >> (liczba_poziomow);
        if (liczba_poziomow > 0)
        {
            choinka(wysokosc, liczba_poziomow);
        }
        else
        {
            cout << "Liczba \"y\" powinna byc wieksza od 0!";
        }
    }
    else
    {
        cout << "Liczba \"x\" powinna byc wieksza od 0!";
    }
    return 0;
}

Co robi poczatkowe r = suma? dlaczego gdy zmieniam r w warunku for zmienia sie kod? Ogolnie co wykonuje te r w 3 przypadkach

1

@Cyber84:

Jako potencjalny "Programista Junior" powiedz mi, co robi ten fragment kodu ?

for(int s1=1;s1<r;s1++) 
{
   cout << (" ");
}

Jak odpowiesz na to pytanie, to zadam Ci kolejne - aż do skutku (czyli do momentu w którym zrozumiesz co Twój(?) kod robi).

0
Bartłomiej Golenko napisał(a):

@Cyber84:

Jako potencjalny "Programista Junior" powiedz mi, co robi ten fragment kodu ?

for(int s1=1;s1<r;s1++) 
{
   cout << (" ");
}

Jak odpowiesz na to pytanie, to zadam Ci kolejne - aż do skutku (czyli do momentu w którym zrozumiesz co Twój(?) kod robi).

Wyswietla spacje, dopelnia spacje do choinki zeby wyswietlic nie trojkat prostokatny tylko rownoboczny trojkat

1 użytkowników online, w tym zalogowanych: 0, gości: 1