[Lekcja 21] Problem z odpowiednim wylosowaniem
Ostatnio zmodyfikowano 2011-11-06 19:53
Lothar Temat założony przez niniejszego użytkownika |
[Lekcja 21] Problem z odpowiednim wylosowaniem » 2011-11-06 17:33:37 Witam, utknalem niestety przy 1 zadaniu domowym w lekcji 21. Mialem napisac program, ktory wylosuje 2 liczby z podanych wczesniej 3, tak aby sie nie powtarzaly (te wylosowane). Po kompilacji wczytuje 3 liczby, ale wyswietla 2 z zupelnie innego niz te podane. Przypuszczam, ze cos schrzanilem przy bloczku losujacym, ale nie wiem jak to ugryzc. Widzialem juz tematy dotyczace tej lekcji ale nie bylo to prawidlowe rozwiazanie zadania. #include <iostream> #include <cstdlib> #include <ctime>
int wczytaj( int tabliczka[], int ilosc ) { do { std::cout << "Podaj liczbe "; std::cin >> tabliczka[ ilosc ]; ilosc++; } while( ilosc < 3 ); }
bool CzyPowtorka( int liczba, int tablica[], int ilosc ) { if( ilosc <= 0 ) return false; int i = 0; do { if( tablica[ i ] == liczba ) return true; i++; } while( i < ilosc ); return false; }
int losowanie( int tablica[], int ilosc ) { ilosc = 0; do { tablica[ ilosc ] = rand(); ilosc++; } while( ilosc < 2 ); }
int main() { srand( time( 0 ) ); int tablica[ 3 ]; int ilosc = 0; int wyniki[ 2 ]; wczytaj( tablica, ilosc ); losowanie( tablica, ilosc ); do { int liczba = losowanie( tablica, ilosc ); if( CzyPowtorka( liczba, tablica, ilosc ) == false ) { tablica[ ilosc ] = liczba; ilosc++; } } while( ilosc < 2 ); ilosc = 0; do { std::cout << tablica[ ilosc ] << std::endl; ilosc++; } while( ilosc < 2 ); return 0; } Blad musi lezec gdzies tutaj, przynajmniej mi sie tak wydaje. int losowanie( int tablica[], int ilosc ) { ilosc = 0; do { tablica[ ilosc ] = rand(); ilosc++; } while( ilosc < 2 ); } Prosze o jakies wskazowki i dziekuje. |
|
pekfos |
» 2011-11-06 18:52:14 ten kod aż się prosi o pętle for zamiast do-while. int losowanie( int tablica[], int ilosc ) { ilosc = 0; do { tablica[ ilosc ] = rand(); ilosc++; } while( ilosc < 2 ); } |
|
Lothar Temat założony przez niniejszego użytkownika |
» 2011-11-06 19:15:52 Bardzo dziekuje za pomoc.
Fakt argument mozna bylo zastapic zmienna wewnatrz, for jeszcze nie znam - ide lekcja po lekcji teraz sie zatrzymalem na tej 21 lekcji, a for bedzie w kolejnych.
A co do return, to czy jego brak i tak nie przypisze wartosci w tym przypadku losowanie(tablica, ilosc) ?
Myslalem ze jest to niekonieczne skoro sie kompilowalo. |
|
pekfos |
» 2011-11-06 19:21:20 Chyba standard mówi że dla T wartość domyślna to T() czyli dla int to będzie 0. ale po co pomijać return skoro używasz wartości zwracanej (w tym przypadku zawsze to będzie 0)? |
|
Lothar Temat założony przez niniejszego użytkownika |
» 2011-11-06 19:53:42 Dobrze bede wiec o tym pamietal. |
|
« 1 » |