Kombinatoryka dla początkujących

0

Witam wszystkich serdecznie.

Na wstępie zaznaczę, że dopiero zacząłem się uczyć programowania w języku C/C++, więc proszę o wyrozumiałość ;)
Pierwsze problemy, z którymi się spotkałem to dział matematyczny z kombinatoryki. Dokładniej rozdział, który przerabiam nazywa się zagnieżdżanie pętli. Na końcu są 2 zadania domowe.

  1. Wyobraź sobie, że masz pięć pudełek. W każdym pudełku możesz umieścić jedną liczbę całkowitą z przedziału od 1 do 3 włącznie. Napisz program, który wypisze na ekranie wszystkie możliwe kombinacje w jaki sposób można zapełnić pudełka. Fragment danych wypisywanych na ekranie:
1 1 1 1 1
1 1 1 1 2
1 1 1 1 3
1 1 1 2 1
. . .
3 3 3 3 2
3 3 3 3 3

Przyznam szczerze, że poradziłem sobie po swojemu i nie wiem czy o to chodziło w zadaniu, ale kod działa:

#include <iostream>

int main()
{
    int a=1;
    int b=1;
    int c=1;
    int d=1;
    int e=1;
    bool x=0;

    do
    {
        do
        {
        if ( b > 3 )
        {
            b=1;
            a++;
            break;
        }

        if ( c > 3 )
        {
            c=1;
            b++;
            break;
        }

        if ( d > 3 )
        {
            d=1;
            c++;
            break;
        }

        if ( e > 3 )
        {
            e=1;
            d++;
            break;
        }

        if ( a == 4)
        {
            x=1;
            continue;
        }
        std::cout << a << " ";
        std::cout << b << " ";
        std::cout << c << " ";

        std::cout << d << " ";
        std::cout << e << " " << std::endl;
        e++;
        } while ( x != 1 );
    } while ( x != 1 );

    return 0;
}

Jeśli możecie to prosiłbym o komentarze, czy tak może zostać, czy jednak o coś innego chodziło.

Do drugiego zadania, póki co nie wiem jak się zabrać i jeśli mógłby ktoś naprowadzić byłbym bardzo wdzięczny. Oto treść:

  1. Wyobraź sobie, że masz pięć piłek i chcesz wylosować trzy z nich. Napisz program, który wypisze na ekranie wszystkie możliwe kombinacje piłek jakie można wylosować. Dane jakie powinny zostać wypisane na ekranie:
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5

Dziękuję z góry i pozdrawiam.

dodanie znaczników <code class="cpp"> - @furious programming

0

Jeszcze jedno pytanie. Dla większości pewnie banalne, ale nie dla mnie. Generalnie w pierwszym zadaniu zastosować pętlę DO....WHILE ? Pętli FOR chyba nie mogę zastosować jeśli nie wiem ile razy ma się zapętlić. Przynajmniej z moją aktualną wiedzą tak interpretuję pętlę FOR.

0

oczywiscie ze wiesz ile razy ma sie zapetlic

a nawet jesli

While mozna napisac tak by dzialal dokladnie tak samo jak for
Jedyna roznica miedzy petlami to jest
do-while i while. Bo w do-while kod wykona sie raz zanim sprawdzi warunek (w przypadku for i while warunek jest sprawdzany Od razu)

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