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

[lekcja 30] Zagnieżdżanie pętli. (zadania)

Ostatnio zmodyfikowano 2014-09-25 15:51
Autor Wiadomość
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2014-09-25 14:23:09
@kitsss
Ten pierwszy już wcześniej rozwiązałem:
C/C++
#include <iostream>
int main() {
    for( short i = 1; i < 4; i++ ) {
        for( short j = 1; j < 4; j++ ) {
            for( short k = 1; k < 4; k++ ) {
                for( short l = 1; l < 4; l++ ) {
                    for( short m = 1; m < 4; m++ ) {
                        std::cout << i << ' ' << j << ' ' << k << ' ' << l << ' ' << m << std::endl;
                    }
                }
            }
        }
    }
    return 0;
}
_______________________________________________________________________________

Ja jestem przy drugim podpunkcie.
Pekfos dał mi rozwiązanie problemu z mojego Post Scriptum.
Jednak ja chcę wiedzieć gdzie zrobiłem błąd w tym kodzie który ja napisałem.
Nie jest ważne, że moja pierwsza próba pomija powtarzalność kombinacji,
ja chcę tylko wiedzieć gdzie jest błąd, że pierwszą kombinacją nie jest "1, 2, 3",
tylko "3, 1, 2". (Kod programu podałem w pierwszym poście tego tematu.)
________________________________________________________________________________

EDIT:
@pekfos
O to rozwiązanie Ci chodziło?:
C/C++
#include <iostream>
int main() {
    for( short i = 1; i < 6; i++ ) {
        for( short j = i + 1; j < 6; j++ ) {
            for( short k = j + 1; k < 6; k++ ) {
                std::cout << i << ' ' << j << ' ' << k << std::endl;
            }
        }
    }
    return 0;
}

Więc teraz mi pomóż naprawić mój badziewny program,
który ma wypisać możliwe kombinacje 5ciu elementów
w 3ech miejscach, bez powtórzenia elementu.

Mój program powinien wypisać:
1 2 3; 1 2 4; 1 2 5; 1 3 2; ... 5 3 4; 5 4 1; 5 4 2; 5 4 3;
________________________________________________________________________________

EDIT 2:
Myślę, że sam sobie poradziłem. Powodem błędów
było nie wyzerowanie tablicy used ...

Oto mój kod (Nie rozwiązujący całkowicie zadania):
Pffffff
C/C++
#include <iostream>
int main() {
    bool used[ 5 ] = { false, false, false, false, false };
    for( short i = 0; i < 5; i++ ) {
        used[ i ] = true;
        for( short j = 0; j < 5; j++ ) {
            if( used[ j ] ) continue;
           
            used[ j ] = true;
            for( short k = 0; k < 5; k++ ) {
                if( used[ k ] ) continue;
               
                used[ k ] = true;
                std::cout << i + 1 << ' ' << j + 1 << ' ' << k + 1 << std::endl;
                used[ k ] = false; }
            used[ j ] = false; }
        used[ i ] = false; }
    return 0; }
;
________________________________________________________________________________

EDIT 3:
Teraz się zajmę kolejnym podpunktem:
Napisz program, który zliczy liczbę możliwych kombinacji wylosowania 6 liczb ze zbioru 49 liczb (reasumując: rozpatrujesz problem popularnej gry liczbowej Lotto). Zadanie należy rozwiązać przy pomocy zagnieżdżonych pętli (nie można używać wzoru).
P-117512
pekfos
» 2014-09-25 15:43:02
Chcę wiedzieć gdzie popełniam błąd
Więc teraz mi pomóż naprawić mój badziewny program,
Myślę, że sam sobie poradziłem. Powodem błędów
było nie wyzerowanie tablicy used ...
Drugi post tematu:
Tablica used jest niezainicjalizowana
Pffffff
P-117517
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2014-09-25 15:51:42
>_< OMG. Za szybko czytałem i pominąłem to... :F
Nie pominąłem tylko nie zrozumiałem co to znaczy. :/
_______________________________________________________

EDIT:
Czy dobrze wykonałem podpunkt z "Lotto"?
C/C++
#include <iostream>
int main() {
    int kombinacje = 0;
    for( short a = 1; a < 49; a++ ) {
        for( short b = a + 1; b < 49; b++ ) {
            for( short c = b + 1; c < 49; c++ ) {
                for( short d = c + 1; d < 49; d++ ) {
                    for( short e = d + 1; e < 49; e++ ) {
                        for( short f = e + 1; f < 49; f++ )
                             kombinacje++;
                       
                    }
                }
            }
        }
    }
    std::cout << kombinacje;
    return 0;
}
_______________________________________________________

EDIT 2:
Źle rozwiązałem. :F
Powinno być: 13'983'816
A jest: 12'271'512
_______________________________________________________

EDIT 3:
Błąd:
for( short a = 1; a < 49; a++ ) {...
Powinno być:
for( short a = 0; a < 49; a++ ) {...

Dziękuję za waszą pomoc i przepraszam z moje nie zrozumienie. :C
P-117519
1 « 2 »
Poprzednia strona Strona 2 z 2