rysowanie 4 kwadratów- prośba o sprawdzenie kodu :)

0

Pozdrowił, teraz narysowałem cztery kwadraty jeden pod drugim. Zastanawia mnie jednak jedna rzecz. Gdy w kodzie umieszczam inicjalizacje zmiennej: int a=4, przed instrukcją while ( b>0) to program rysuje tylko jeden kwadrat. Czy ktoś z szanownych użytkowników forum mógłby mi to wyjaśnić? Z góry dziękuję. Krzysztof :)


#include <iostream>

using namespace std;

int main()
{
    int b=4;
    // gdy umieszczę inicjalizację zmiennej int a =4 tutaj, program rysuje tylko jeden kwadrat- prośba o wyjaśnienie
    while (b>0)
    {
        int a=4; 

        while (a>0)
        {

            for(int i =0; i<4; i++)
                cout<<"*";
            cout<<endl;

            --a;
        }
        --b;
        cout<<endl;
    }
    return 0;
}


2

Nie ustawiasz wtedy wartości na 4 przy każdym wejściu w pętlę, co tu więcej do wyjaśniania.

3

Masz dwie pętle while: pierwsza/zewnętrzna ma warunek wyjścia na zmiennej b, druga (wewnętrzna) na zmiennej a.

W obecnej postaci, zmienna a za każdym przebiegiem pętli while (b>0) otrzymuje na początku wartość 4. Jeśli wyrzucisz to przed tą pętlę, to za pierwszym razem gdy "przeleci" pętla while(a>0), potem nie nastąpi reset jej wartości, więc kolejne razy się nie wykonają. Efektem jest właśnie pojawienie się tylko jednego kwadratu.

1

Po kiego tak komplikować? wystarczy jeden wiersz!

#include <iostream>
using namespace std;

int main()
{
    for(int n=0;n<4;++n,cout<<endl) for(int y=0;y<4;++y,cout<<endl) for(int x=0;x<4;++x) cout<<'*';
    return 0;
}

https://ideone.com/XacadC

0

Po kiego tak komplikować?

Docelowo chciałem napisać program, który będzie wyświetlał wybraną przez użytkownika liczbę kwadratów. Wtedy po modyfikacji pętli while otrzymujemy takie coś:

#include <iostream>

using namespace std;

int main()
{
    int ile=0;
    cout<<"ile kwadratow chcesz narysowac?"<<endl;
    cin>>ile;
   

    while (ile>0)
    {

        int a=4;
        while (a>0)
        {


            for(int i =0; i<4; i++)
                cout<<"*";
            cout<<endl;

            --a;
        }
        --ile;
        cout<<endl;
    }
    return 0;
}


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