[Lekcja 17] zadanie 3 - pytanie
Ostatnio zmodyfikowano 2013-05-13 14:15
Beton Temat założony przez niniejszego użytkownika |
[Lekcja 17] zadanie 3 - pytanie » 2013-05-13 13:51:37 Otoz mam pytanie, napisalem program do owego zadania, komputer wypisuje mi wylosowane liczby jezeli wcisne T, a jak N to konczy, wiec jest OK. Kod do programu: #include <iostream> #include <cstdlib> #include <ctime>
int losowanie() { srand( time( NULL ) ); int liczba =(( rand() % 11 ) + 50 ); std::cout << "twoaj wylsoowana liczba to: " << liczba << std::endl; }
int main() { char wybor; int los; do { std::cout << "Czy chcesz losowac liczbe ? " << std::endl; std::cin >> wybor; if( wybor == 'T' ) { los = losowanie(); std::cin.sync(); std::cin.clear(); } if( wybor == 'N' ) { std::cout << "Koniec programu"; } } while( wybor == 'T' ); }
co mnie zastanawia, jezeli ustawie przedzial losowania np: na 1000 liczb od 1, wywolam program i zgodze sie na losowanie wyswietlona zostanie liczba, np: 326, w nastepnym obiegu losowania wyswietli mi sie 329, w kolejnym 333 i bedzie caly czas wzrastac o zblizonym trendzie (co 3,4 lub 5), nigdy tez nie zostanie wylosowana nizsza liczba. Czy w kodzie mam jakis blad? czy mozna temu jakos zaradzic? |
|
Berux |
» 2013-05-13 13:54:26 srand( time( NULL ) ); usuń z funkcji losowanie, a wrzuć na początek main. /edit: i nie potrzebna jest zmienna "los", bo nic ona nie robi :) oraz zmień typ funkcji losowanie na void, bo nic nie zwracasz. |
|
Beton Temat założony przez niniejszego użytkownika |
» 2013-05-13 14:02:19 dzieki wielkie teraz dziala, wiec srand(time(NULL)); powinno sie tylko raz wpisac bez umieszczania tego w petli? |
|
Bajt |
» 2013-05-13 14:15:59 srand( time( NULL ) ) umieszczasz raz, na początku w funkcji main. W kursie na tym serwisie jest stosowna lekcja na ten temat, więc polecam. |
|
« 1 » |