Lekcja 30 zadanie 2
Ostatnio zmodyfikowano 2016-09-17 00:07
Shadow7 Temat założony przez niniejszego użytkownika |
Lekcja 30 zadanie 2 » 2016-09-16 14:39:32 Witam, kompletnie nie mam pomysłu na zadanie 2 z lekcji 30... http://cpp0x.pl/kursy/Kurs-C++/Poziom-3/Zagniezdzanie-petli/347 Udało mi się zrobić wariacje bez powtórzeń, ale nie kombinacje... Nie mam pojęcia jak to bez używania wektorów ugryźć. Proszę o wskazówki
#include <iostream> #include <string> #include <cstdlib> #include <ctime> using namespace std; int main() { for (int p1 = 1; p1 < 6; p1++) { for (int p2 = 1; p2 < 6; p2++) { if (p2 == p1) { continue; } for (int p3 = 1; p3 < 6; p3++) { if (p3 == p1 || p3 == p2) { continue; } cout << p1 << p2 << p3 << endl; } } } return 0; } |
|
mateczek |
» 2016-09-16 16:15:17 #include <iostream> using namespace std;
int main() { int iloscKobinacji = 0; const int n = 6; for( int p1 = 1; p1 <= n - 2; p1++ ) { for( int p2 = p1 + 1; p2 <= n - 1; p2++ ) { for( int p3 = p2 + 1; p3 <= n; p3++ ) { iloscKobinacji++; cout << p1 << " " << p2 << " " << p3 << endl; } } } cout << "bylo: " << iloscKobinacji << " kombinacji " << endl; }
Tu masz na stałe generować trójki . A Jak chcesz powalczyć to napisz program aby użytkownik zadawał oba parametry. czyli ile i z ilu. :P |
|
igawar |
Lekcja 30 zadanie 4 » 2016-09-16 23:15:50 "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)." Napisałam: #include <iostream> using namespace std;
int main() { int iloscKombinacji = 0; int p1, p2, p3, p4, p5, p6; const int n = 49; for( p1 = 1; p1 <= n - 5; p1++ ) { for( p2 = p1 + 1; p2 <= n - 4; p2++ ) for( p3 = p2 + 1; p3 <= n - 3; p3++ ) for( p4 = p3 + 1; p4 <= n - 2; p4++ ) for( p5 = p4 + 1; p5 <= n - 1; p5++ ) for( p6 = p5 + 1; p6 <= n; p6++ ) { iloscKombinacji++; cout << p1 << " " << p2 << " " << p3 << " " << p4 << " " << p5 << " " << p6 << endl; } } cout << "iloscKombinacji= " << iloscKombinacji << endl; }
"Weryfikacja poprawności zadania Jeżeli uzyskana wartość mieści się w przedziale od 12 do 15 milionów to znaczy, że poprawnie rozwiązałeś zadanie. " Niestety nie czekałam aż wypisze ilośćKombinacji, za długo by to trwało ale mam nadzieję, że dobrze napisałam. |
|
Gibas11 |
» 2016-09-16 23:51:12 @Up Jeśli pominiesz wyświetlanie w pętli i zostawisz samą inkrementację kompilator skrajnie to zoptymalizuje wywalając wszelkie pętle. A wynik wyszedł dokładnie taki jaki podałaś w komentarzu w kodzie. |
|
igawar |
» 2016-09-16 23:59:25 Zgadza się. Dałam // przed cout <<p1<<" "<<p2<<" "<<p3<<" "<<p4<<" "<< p5<<" "<< p6 <<endl i wyszedł wynik taki jak trzeba :)
A jak wkleić kod programu, żeby tak ładnie wyglądał? Ja dałam "["code"]" ... "[/code]" to wyszło tak na czarnym tle.
|
|
mateczek |
» 2016-09-17 00:03:22 |
|
igawar |
» 2016-09-17 00:07:29 dzięki mateczek i Gibas11. Wszystko się zgadza :) :) |
|
« 1 » |