[ lekcja 21 ]Problemik z losowanie bez powtórzeń
Ostatnio zmodyfikowano 2013-06-28 15:51
Proleks Temat założony przez niniejszego użytkownika |
» 2013-06-28 13:44:21 Coś wiem :p chociaż nie wiem po zakończeniu roku mogę przez chwilę nie myśleć .
A co jest nie tak ? Mówiłeś ,żebym zwrócił coś no to zwracam tablice gdzie są zapisane liczby czy źle to napisałem ?
Wyjaśnij proszę :p |
|
pekfos |
» 2013-06-28 13:58:26 Podzieliłeś program na takie funkcje, więc powinieneś wiedzieć, co każda z funkcji ma robić. Jak tego nie wiesz, to nie widzę sensu dalszego wyjaśniania, bo to będzie jak rzucanie grochem o ścianę (jak w niektórych momentach tego tematu..). Jeśli wiesz, co co ma robić, to wiesz też, co ma przyjmować i zwracać dana funkcja. Tu nie ma nic do wyjaśniania! |
|
Proleks Temat założony przez niniejszego użytkownika |
» 2013-06-28 14:05:28 No pisałem od podstaw wymyślałem nazwy itp i funkcja podaj () ma za zadanie pozwolić wpisać 3 liczby które potem będą zwrócone w tablicy żeby mogło wybrać losowo 3 liczby ale jakoś mi to nie wychodzi :/ |
|
pekfos |
» 2013-06-28 14:11:04 które potem będą zwrócone w tablicy |
Zwracanie w tym przypadku nie jest potrzebne i nie ma sensu. Liczby zostaną zapisane w tablicy, podanej jako argument. Zdefiniuj tą funkcję, jako nic nie zwracającą. |
|
Proleks Temat założony przez niniejszego użytkownika |
» 2013-06-28 15:15:47 Czyli return false ; tak czy return 0 ; ?
edit // Wszystko ladnie pieknie tylko nie losuje mi tych liczb podanych zawsze wyswietla on dwie pierwsze :/ |
|
pekfos |
» 2013-06-28 15:22:51 Pokaż kod.. |
|
Proleks Temat założony przez niniejszego użytkownika |
» 2013-06-28 15:23:54 #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int podaj( int podaj[] ) { int licznik = 0; cout << "Podaj 3 liczby " << endl; do { cin >> podaj[ licznik ]; licznik++; } while( licznik < 3 ); return false; }
int czybyla( int iliczba, int tab[], int ile ) { if( ile <= 0 ) return false; int licznik = 0; do { if( tab[ licznik ] == iliczba ) return true; licznik++; } while( licznik < ile ); return false; }
int main() { srand( time( NULL ) ); int podan[ 3 ]; int wybrane = 0; int podane = podaj( podan ); do { if( czybyla( podane, podan, wybrane ) ) podan[ wybrane ] = podane; wybrane++; } while( wybrane < 2 ); wybrane = 0; do { cout << podan[ wybrane ] << " , "; wybrane++; } while( wybrane < 2 ); }
|
|
pekfos |
» 2013-06-28 15:30:59 Czyli return false ; tak czy return 0 ; ? | return zwraca, więc nawet na logikę widać, że nie tędy droga. Funkcja która nic nie zwraca wygląda tak: void nic_nie_zwracamm() { } To było w kursie.. Wszystko ladnie pieknie tylko nie losuje mi tych liczb podanych zawsze wyswietla on dwie pierwsze :/ |
Kolejny przykład, że nie wiesz, co piszesz. Fragment twojego kodu, który miał wypisywać wylosowane liczby: do { cout << podan[ wybrane ] << " , "; wybrane++; } while( wybrane < 2 ); Nie ma tu nic o losowaniu, wypisujesz po prostu dwie pierwsze.. |
|
1 2 3 4 « 5 » 6 |