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

Odpowiedz Nowy wątek
2020-02-14 23:00

Rejestracja: 1 rok temu

Ostatnio: 5 dni temu

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;
}
kq
2020-02-14 23:02
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 14 minut temu

Lokalizacja: Szczecin

2

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


Pozostało 580 znaków

2020-02-14 23:04
Moderator Kariera

Rejestracja: 2 lata temu

Ostatnio: 3 dni temu

Lokalizacja: Poznań

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.


Naczelny forumowy hejter Apple

That game of life is hard to play, I'm gonna lose it anyway
The losing card I'll someday lay, So this is all I have to say

Pozostało 580 znaków

2020-02-15 07:15

Rejestracja: 14 lat temu

Ostatnio: 1 dzień temu

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2020-02-15 14:52

Rejestracja: 1 rok temu

Ostatnio: 5 dni temu

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;
}
edytowany 1x, ostatnio: crispia, 2020-02-15 20:07

Pozostało 580 znaków

Odpowiedz

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