Lekcja 30 - Ostatnie zadanie domowe (Lotto i te sprawy)
Ostatnio zmodyfikowano 2014-08-21 17:24
Sorbet Temat założony przez niniejszego użytkownika |
Lekcja 30 - Ostatnie zadanie domowe (Lotto i te sprawy) » 2014-08-19 20:51:35 Uszanowanko, W rozdziale o zagnieżdżaniu pętli (#30) udało mi się zrobić wszystkie zadania oprócz ostatniego, próbowałem zrobić je w sposób podobny do poprzednich(i pewnie o to chodzi), ale mi nie wyszło bo ma wyjść między 12 a 15 milionów, a mi wychodzi 134 miliony. Prawdopodobnie ktoś już o to pytał, ale nie wiem czy to wina mojego komputera/przeglądarki, ale wyszukiwarka nie zwraca mi żadnych wyników wyszukiwania (nawet jeśli wpiszę po prostu "a" to mam 0 wyników). Po przejrzeniu 10 stron zrezygnowałem. Chyba zbyt rozległy wstęp napisałem. Do rzeczy: Załączam treść zadania: "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)." I mój kod: #include <iostream>
int main( int argc, char * argv[] ) { bool p[ 49 ]; for( int i = 0; i < 49; i++ ) p[ i ] = false; long mozliwosci = 0; for( int a = 0; a <= 43; ++a ) { p[ a ] = true; for( int b = 1; b <= 44; ++b ) { p[ b ] = true; for( int c = 2; c <= 45; ++c ) { p[ c ] = true; for( int d = 3; d <= 46; ++d ) { p[ d ] = true; for( int e = 3; e <= 47; ++e ) { p[ e ] = true; for( int f = 4; f <= 48; ++f ) { if( a != b && a != c && a != d && a != e && a != f && b != c && b != d && b != e && b != f && c != d && c != e && c != f && d != e && d != f && e != f ) { if( p[ f ] != true ) { mozliwosci++; } } } } } } } } std::cout << "Ilosc mozliwosci: " << mozliwosci << std::endl; std::cin.get(); return 0; } Proszę o nakierowanie mnie na rozwiązanie albo udzielenie wskazówek. Z góry dziękuję, Sorbet |
|
pekfos |
» 2014-08-19 20:59:26 Nie potrzeba tu żadnych instrukcji if, ani tablic. |
|
Sorbet Temat założony przez niniejszego użytkownika |
» 2014-08-19 21:02:17 Instrukcje IF i tablice wsadziłem tu po to, żeby nie było powtórek takich jak 1,2,3 i 1,3,2. |
|
1aam2am1 |
» 2014-08-19 21:04:03 A powtórki tych samych liczb. |
|
pekfos |
» 2014-08-19 21:04:20 Nie jest to do niczego potrzebne. Powtórki można w całości wyeliminować odpowiednią konstrukcją pętli. |
|
Sorbet Temat założony przez niniejszego użytkownika |
» 2014-08-19 21:06:49 Widzę właśnie że zacząłem dwie pętle od tej samej liczby, to już coś. Idę poprawić. |
|
Sorbet Temat założony przez niniejszego użytkownika |
» 2014-08-19 21:10:45 Zeszły 3 miliony. Ale nie jestem w stanie skonstruować takich pętli, które załatwią sprawę. |
|
pekfos |
» 2014-08-20 00:02:23 To zacznij od analizy efektu, jaki chcesz uzyskać. Np dla 3 pętli 1-5: 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 Jak widać, im wyższe liczby, tym mniej obiegów i od wyższych wartości się zaczynają.. |
|
« 1 » 2 |