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

R. 30 Zagnieżdżanie pętli - losowanie trzech piłek z pięciu

Ostatnio zmodyfikowano 2018-12-23 20:51
Autor Wiadomość
rottingham
Temat założony przez niniejszego użytkownika
R. 30 Zagnieżdżanie pętli - losowanie trzech piłek z pięciu
» 2018-12-21 15:45:21
Cześć! Napisałem funkcję losowania trzech piłek z pięciu na wszelkie możliwe sposoby bez powtarzania. Wszystko działa tak jak powinno, ale pytanie czy ten kod jest napisany dobrze? Czy da się to napisać krócej/lepiej będąc na tym etapie kursu?

Będę wdzięczny za jakiekolwiek wskazówki!

C/C++
int main()
{
    for( int x = 1; x <= 5; x++ )
    {
        for( int y = 1; y <= 5; y++ )
        {
            for( int z = 1; z <= 5; z++ )
            {
                if(( x != y ) &&( y != z ) &&( y != z ) &&( x != z ) )
                     cout << x << " " << y << " " << z << endl;
               
            }
        }
    }
}
P-173295
YooSy
» 2018-12-21 16:21:14
Wszystko działa tak jak powinno, ale pytanie czy ten kod jest napisany dobrze?
Nie jest napisany dobrze, bo nie działa tak jak powinien.
P-173296
pekfos
» 2018-12-21 23:38:39
Nie używaj if. Prędzej wpadniesz na poprawne rozwiązanie, jak nie będziesz mieć tego dodatkowego stopnia swobody.
C/C++
for(...;...;...)
for(...;...;...)
for(...;...;...)
     std::cout <<...;
Wystarczy uzupełnić.
P-173298
rottingham
Temat założony przez niniejszego użytkownika
» 2018-12-23 17:12:49
Ok, mam to. Dzięki za pomoc Panowie :)

Na wstępie się zgubiłem, bo stwierdziłem, że we wszystkich kombinacjach np. piątka też może być na przodzie i uznałem, że jest mały błąd w przedstawionych danych wyjściowych.

Ostatecznie napisałem taki kod, który moim zdaniem jest poprawny:

C/C++
for( int x = 1; x <= 3; x++ )
{
    for( int y =( x + 1 ); y <= 4; y++ )
    {
        for( int z =( y + 1 ); z <= 5; z++ )
             cout << x << y << z << endl;
       
    }
}
P-173305
pekfos
» 2018-12-23 20:51:45
Nawiasy niepotrzebne. Poza tym dobrze że zauważyłeś, że zewnętrzne pętle nie potrzebują działać na pełnym zakresie, bo i tak ostatnie wartości to puste przebiegi. Znacznie lepiej niż naiwne podejście z pierwszego postu ;) Celem tej lekcji nie było pokazanie, że można umieścić pętlę w pętli, bo to akurat powinno być oczywiste. Naklepanie trzech pętli przeszukujących dziedzinę 5 × 5 × 5 jest proste, napisanie sensownego algorytmu już niekoniecznie.
P-173306
« 1 »
  Strona 1 z 1