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

Lekcja 30 - Zadanie domowe Lotto

Ostatnio zmodyfikowano 2014-12-29 21:17
Autor Wiadomość
dafuck17
Temat założony przez niniejszego użytkownika
Lekcja 30 - Zadanie domowe Lotto
» 2014-12-25 18:04:21
Kod z treścią zadania:
C/C++
#include <iostream>
using namespace std;
/* 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).
  */
int main()
{
    int kombinacje = 0;
    for( int a = 1; a <= 49; a++ )
    {
        for( int b = 2; b <= 49; b++ )
       
        for( int c = 3; c <= 49; c++ )
       
        for( int d = 4; d <= 49; d++ )
       
        for( int e = 5; e <= 49; e++ )
       
        for( int f = 6; f <= 49; f++ )
        {
            if( a == b || b == c || c == d || d == e || e == f || d == f || c == f || b == f || a == f || c == e || b == e || a == e || b == d || a == d || a == c )
                 continue;
           
            cout << a << " " << b << " " << c << " " << d << " " << e << " " << f << " " << endl;
            kombinacje++;
        }
    }
   
   
    cout << "Liczba kombinacji: " << kombinacje;
    return 0;
}
Nie wiem czy kod jest dobry ponieważ musiałby mi się kompilować chyba cały dzień żebym mógł sprawdzić, czy jest te 12 milionów kombinacji, więc proszę tu o sprawdzenie :p
P-123324
Rashmistrz
» 2014-12-25 21:10:11
Przez ten IF w środku końca nie widać...
//i te wypisywanie kombinacji...

Nie mógłbyś zrobić to tak że do zmiennej
zewnętrzniejszej pętli po prostu dodajesz 1
i używasz tej wartości w wewnętrzniejszej
pętli jako początkową?

Wtedy na pewno będą różne wartości
i nie będziesz musiał ich sprawdzać.

O coś w tym stylu:
C/C++
for( a = 0; a < 49; a++ ) {
    for( b = a + 1; b < 49; b++ ) {
        // ...
P-123335
1aam2am1
» 2014-12-26 00:48:23
Wtedy nie będzie wszystkich kombinacji.
Np.
I kombinacja 10 11 20 ...
II kombinacja 20 10 11 ...
Liczby są w innej kolejności co powoduje że jest to inna kombinacja. Nie wiem czy w lotto się to stosuje ale jest to na początku kombinatoryki.
Jeżeli kolejność się nie liczy to @up to skróci czas obliczeń i zwiększy czytelność kodu.
P-123338
Mateus.
» 2014-12-26 09:38:07
@1aam2am1
Mylisz kombinacje z wariacjami bez powtórzeń. W tym przypadku są to kombinacje, czyli takie coś (2,1) i (1,2) to ta sama kombinacja. Zastosuj rozwiązanie Rashmistrz, tyle, że zrób w warunku pętli
a < 50
 lub
a <= 49
, a nie
a < 49
. Aha i usuń wypisywanie kombinacji, bo będzie to trwało naprawdę długo.
P-123340
dafuck17
Temat założony przez niniejszego użytkownika
» 2014-12-29 21:17:56
dzięki za pomoc :)
P-123608
« 1 »
  Strona 1 z 1