akwes |
» 2012-03-17 22:46:01 Musisz przeanalizować co przesyłasz do funkcji czy_byla_wylosowana. Zakładam, że chcesz przesłać tablicę liczb, które już były wylosowane? bool czy_byla_wylosowana( int liczba, int losowane[ 2 ], int wylosowane ) { cout << "DEBUG INFO: " << losowane[ 0 ] << losowane[ 1 ]; return true; }
Sprawdziłeś chociaż raz, co faktycznie tam przesyłasz? Sprawdź, przykład jak to zrobić wyżej ;) 1: Losuj liczbę 2: Sprawdź, czy zgadza się z podanymi przez użytkownika, jeżeli nie, wróć do 1. 3: Losuj drugą liczbę, czy zgadza się z podanymi przez użytkownika, jeżeli nie, wróć do 3. 4. Sprawdź czy liczba z punktu 3 jest różna od liczby z puntu 2, jeżeli nie wróć do 3. |
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-03-17 22:54:46 No tak. 1. Wysyłam do tej funkcji liczbę wylosowaną z tych których podałem wcześniej. 2. Wysyłam tablicę z liczbami które zostały już wylosowane aby sprawdzać czy w niej czasami nie istnieje już ta liczba która być może się wylosowała. 3. Wysyłam zmienną która mówi którą liczbę z kolei losuję.
Wszystko wydaje się być ok. Co do tego debug nie wiem jak tego używać ale uruchomiłem z tym co Ty dałeś i program się normalnie wykonał lecz przy tym debug były jakieś liczby inne :) Nie wiem ocb :)
Pełna treść zadania: Napisz program, który wczyta 3 liczby podane przez użytkownika do tablicy, a następnie wylosuje 2 z nich bez powtórzeń. Wynik wypisz na ekran. Postaraj się napisać ten program w oparciu o funkcje. |
|
akwes |
» 2012-03-17 23:01:34 Debug info to zwykły tekst, który informuje o tym że jest to informacja. Potem są liczby które TY przesyłasz. Które DIAMETRALNIE różnią się od tych, które podał użytkownik. Teraz już wiesz co jest źle. // 2. Wysyłam tablicę z liczbami które zostały już wylosowane aby sprawdzać czy w niej czasami nie istnieje już ta liczba która być może się wylosowała.
|
Nie, nie robisz tego. Wyświetlam przecież te liczby w tej funkcji wyżej i mają prawie że losowe wartości. |
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-03-17 23:10:24 No ok :) Błędu nie mogę zlokalizować chociaż wiem (lub jednak nie do końca) gdzie. Zastanawia mnie też fakt dlaczego jeśli tam są jakieś losowe liczby to przy wyświetlaniu tej zmiennej są te "niby" prawidłowe? |
|
dannooon |
» 2012-03-17 23:42:52 Patrząc na ten kod widzę ten sam jaki był zamieszczony w lekcji 21 jako przykładowy. Sam miałem problem z tym tematem i żeby go całkowicie zrozumieć napisałem swoją funkcje losującą bez powtórzeń. Dzięki temu łatwiej sobie to przyswoiłem :) Polecam ci zrobić to samo. |
|
akwes |
» 2012-03-17 23:43:38 Eeeh Ty ;p Prześledź kod :P int main() { srand( time( NULL ) ); int podawane[ 3 ]; int losowane[ 2 ]; int wylosowane = 0; int a = 0; do { podawane[ a ] = podawanie_liczb(); a++; } while( a < 3 ); do { int liczba = wylosuj( podawane ); if( czy_byla_wylosowana( liczba, losowane, wylosowane ) == false ); { losowane[ wylosowane ] = liczba; wylosowane++; } } while( wylosowane < 2 ); a = 0; do { cout << "Wylosowana liczba sposrod wyslanych: " << losowane[ a ] << endl; a++; } while( a < 2 ); _getch(); return 0; }
|
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-03-17 23:55:37 akwes, a co to ma do rzeczy skoro i tak one się nadpiszą gdy przejdą przez funkcję a potem w programie przez if? Z mojego punktu widzenia to akurat problemu raczej nie robi no chyba że się mylę... ;)
dannooon, ja rozumie ten kod lecz nie wiem gdzie mój program ma błąd :O :)
Dla mnie ogólnie program działa tylko że jest w nim wada że nie działa do końca tak jak autor chciał xD |
|
akwes |
» 2012-03-17 23:59:49 Kiedy się niby nadpiszą? Skoro odczytujesz je, zanim pojawia się jakakolwiek instrukcja zapisu? Ani w funkcji, ani przed jej wywołaniem ich nie nadpisujesz. A odczytujesz ich wartości w funkcji. Przecież się nie teleportują do dalszej części kodu i nie nadpisza tam żeby potem wrócić wcześniej :| int main() { srand( time( NULL ) ); int podawane[ 3 ]; int losowane[ 2 ]; int wylosowane = 0; int a = 0; do { podawane[ a ] = podawanie_liczb(); a++; } while( a < 3 ); do { int liczba = wylosuj( podawane ); if( czy_byla_wylosowana( liczba, losowane, wylosowane ) == false ); { losowane[ wylosowane ] = liczba; wylosowane++; } } while( wylosowane < 2 ); a = 0; do { cout << "Wylosowana liczba sposrod wyslanych: " << losowane[ a ] << endl; a++; } while( a < 2 ); _getch(); return 0; }
|
|
1 2 « 3 » 4 5 6 |