[Kurs] Losowanie bez powtórzeń, wyjaśnienie
Ostatnio zmodyfikowano 2014-03-19 08:47
MojaTrauma Temat założony przez niniejszego użytkownika |
[Kurs] Losowanie bez powtórzeń, wyjaśnienie » 2014-03-14 19:04:21 Idąc sobie poprzez kurs niczym burza, po pewnej nieprzespanej nocy w pracy wziąłem się właśnie za lekcje o losowaniu bez powtórzeń. Jak to zwykle mam w zwyczaju, stanąłem na początku tematu i zacząłem pisać kod. Otóż mógłbym go napisać jeszcze raz albo dojść do końca rozdziału i zrobić to tak jak powinno to wyglądać, lecz po nie zadowalającym mnie wyniku kompilacji chciałbym się dowiedzieć co jest nie tak w poniższym kodzie: #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int przypisanie( int t[] ) { int i = 0; do { t[ i ] =(( rand() % 10 ) + 1 ); i++; } while( i < 5 ); return 0; }
int sprawdzenie( int t[], int nr ) { int i = 0; do { if( t[ nr ] == t[ i ] ) { t[ nr ] =(( rand() % 10 ) + 1 ); } else { i++; } } while( i < 5 ); return 0; }
int main() { srand( time( NULL ) ); int tablica[ 5 ]; int num = 0; cout << "Inicjacja dziala!" << endl; przypisanie( tablica ); cout << "Przypisanie dziala!" << endl; do { sprawdzenie( tablica, num ); cout << tablica[ num ] << ", "; num++; } while( num < 5 ); return 0; } Z tego co rozumiem jest coś nie tak z funkcją "sprawdzenie" ew. z losowaniem liczb. Przypominam że nie interesuje mnie gotowe rozwiązanie, tylko wytknięcie co zrobiłem nie tak w moim programie - gdyż może coś nie do końca zrozumiałem i muszę wrócić do poprzedniej lekcji. Dzięki za pomoc :). |
|
lukmas3 |
» 2014-03-18 20:38:20 a może napisałbyś co mają robić poszczególne funkcje, wtedy ew. można powiedzieć co jest nie tak |
|
alixir |
» 2014-03-19 08:47:47 Nie bardzo mogę zrozumieć co ma dokładnie robić funkcja „sprawdzenie”. Przypatrz się uważnie co się dzieje w pierwszym przebiegu twojej głównej pętli w main. Wywołujesz funkcję przekazując do niej tablicę oraz num, który wynosi początkowo 0. W funkcji porównujesz czy element tablicy o numerze „num” (0) jest równy elementowi tablicy o numerze „i” (0) . Wynik chyba jest oczywisty. Stąd wywołuje się przypisanie nowo wylosowanej liczby. Nic innego pozatym się nie dzieje, więc pętla funkcji porównuje nadal ten sam element tablicy ….. i tak w kółko.
|
|
« 1 » |