kundelko Temat założony przez niniejszego użytkownika |
Rozdział 30. Zadanie domowe , sprawdzenie plus dodatkowe wskazówki . » 2017-09-04 15:53:47 Witam prosił bym o sprawdzenie mojego zadania domowego z rozdziału 30 . Jak i dodatkowe wskazówki "Jak można zrobić to lepiej " lub odnośnie poprawy czytelności kodu czy skrócenia go .Z góry dziękuje ;) Zad 1 "Wyobraź sobie, że masz pięć pudełek. W każdym pudełku możesz umieścić jedną liczbę całkowitą z przedziału od 1 do 3 włącznie. Napisz program, który wypisze na ekranie wszystkie możliwe kombinacje w jaki sposób można zapełnić pudełka. Fragment danych wypisywanych na ekranie: " #include <iostream> using namespace std;
int main() { for( int a = 1; a <= 3; a++ ) for( int b = 1; b <= 3; b++ ) for( int c = 1; c <= 3; c++ ) for( int d = 1; d <= 3; d++ ) for( int e = 1; e <= 3; e++ ) cout << a << b << c << d << e << endl; return 0; }
zad2. Wyobraź sobie, że masz pięć piłek i chcesz wylosować trzy z nich. Napisz program, który wypisze na ekranie wszystkie możliwe kombinacje piłek jakie można wylosować. Dane jakie powinny zostać wypisywane na ekranie: #include <iostream>
using namespace std;
int main() { for( int a = 1; a <= 5; a++ ) for( int b = 2; b != a & b <= 5; b++ ) for( int c = 3; c != a & c != b & c <= 5; c++ ) cout << a << b << c << endl; return 0; }
zad.3 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). #include <iostream>
using namespace std;
int main() { int licznik = 0; for( int a = 1; a <= 49; a++ ) for( int b = 2; b != a & b <= 49; b++ ) for( int c = 3; c != b & c != a & c <= 49; c++ ) for( int d = 4; d != a & d != b & d != c & d <= 49; d++ ) for( int e = 5; e != a & e != b & e != c & e <= 49 & e != d; e++ ) for( int f = 6; f != a & f != b & f != c & f <= 49 & f != d & f != e; f++ ) licznik++; cout << "Liczba mozliwych kombinacji" << endl; cout << licznik; return 0; }
|
|
pekfos |
» 2017-09-04 16:47:05 Wszystko poza zadaniem pierwszym jest błędnie. |
|
kundelko Temat założony przez niniejszego użytkownika |
a » 2017-09-04 16:54:26 Mógłbym prosić o szczegóły , np. Czemu zadanie 2 jest błędne skoro program działa poprawnie |
|
pekfos |
» 2017-09-04 16:56:34 Są błędne bo nie działają poprawnie i dają bezsensowne wyniki. |
|
kundelko Temat założony przez niniejszego użytkownika |
b » 2017-09-04 17:14:06 Hmm.. a w zadaniu drugim , dostaje takie wyniki : 123 124 125 143 153 154 423 523 524 543 i są one zgodne z tymi z rozdziału 30 (no może niektóre mają inną kolejność , ale przecież to nieważne jeśli mamy do czynienia z losowaniem w którym kolejność nie ma znaczenia ) przepraszam że znowu piszę ale wydawało mi się że te zadanie jest wykonane poprawie , i nie wiem w czym tkwi mój błąd , przez co ciężko zabrać się za naprawę kodu . Pozdrawiam |
|
pekfos |
» 2017-09-04 17:24:08 Zasadniczo kolejne możliwe wyniki losowania powinieneś generować w kolejności, bo tak można to zrobić znacznie krótszym kodem. Przeprowadziłem trochę testów i wychodzi że wyniki (zliczania) są poprawne, a wyniki w zadaniu drugim są chyba poprawne z dokładnością do permutacji - poprawność twojego algorytmu nie jest taka oczywista do udowodnienia, jak powinna być. Co do błędów, to jako spójnika w warunkach użyłeś operatora &, który raczej nie jest na tym etapie omówiony w kursie, powinno być &&. W tym konkretnym przypadku to nie wpływa na wynik, jednak z punktu widzenia pracy domowej to jest błąd. Do zrealizowania tych zadań nie trzeba używać żadnych złożonych warunków. |
|
kundelko Temat założony przez niniejszego użytkownika |
c » 2017-09-04 17:28:32 Ok . Dziękuje za pomoc ;) pozdrawiam |
|
kundelko Temat założony przez niniejszego użytkownika |
zad » 2017-09-06 12:18:15 Witam, czy teraz zadanie 2 . jest wykonane poprawnie ?? #include <iostream>
using namespace std;
int main() { for( int a = 1; a <= 5; a++ ) for( int b = 1; b <= 5; b++ ) { for( int c = 1; c <= 5; c++ ) { if( a >= c || b >= c || a >= b ) continue; cout << a << b << c << endl; } } return 0; }
|
|
« 1 » 2 |