darius Temat założony przez niniejszego użytkownika |
Lekcja 16 zadanie domowe » 2013-07-09 16:46:07 Witam Mam problem w następnej lekcji 16. Treść zadania: Napisz funkcję, która losuje liczbę z przedziału od 50 do 60 włącznie. Wywołaj funkcję kilka razy (wypisz wylosowane wartości na ekran) w celu przetestowania czy działa ona poprawnie. Nie wiem czy dobrze nawet zadania zrobiłem. Proszę o pomoc. :) #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int losowanie() { srand( time( NULL ) ); int liczba =( rand() % 60 ) + 50; }
int main() { int wynik = losowanie(); cout << "Liczby ktore zostaly wyslosowane z przedzialu 50-60 to: " << wynik << endl; return 0; } |
|
Berux |
» 2013-07-09 16:55:00 1) srand( time( NULL ) ); umieszczamy w programie 1 raz, w funkcji głównej. 2) int liczba =( rand() % 60 ) + 50; Ten kawałek kodu losuje liczbę, która znajduje się w przedziale od 50 do 109 (losuje do 60-tej liczby zaczynając od 50(trochę to słabo wytłumaczyłem :D)). Jeśli jeszcze coś zauważę, to dopiszę ;) |
|
darius Temat założony przez niniejszego użytkownika |
» 2013-07-09 17:00:04 Ok czyli jak narazie mój kod wygląda mniej więcej tak: #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int losowanie() { int liczba =( rand() % 60 ) + 50; }
int main() { srand( time( NULL ) ); int wynik = losowanie(); cout << "Liczby ktore zostaly wyslosowane z przedzialu 50-60 to: " << wynik << endl; return 0; } Jak poprawić u mnie kod z losowaniem? tzn. z przedziałem. Jak to poprawić? |
|
Berux |
» 2013-07-09 17:06:16 Skoro masz losować liczby z przedziału od 50 do 60 włącznie, musisz losować do 11-tej liczby zaczynając od 50 (50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 (razem 11 liczb)). Myślę, że sobie poradzisz :) |
|
darius Temat założony przez niniejszego użytkownika |
» 2013-07-09 17:17:16 Ok teraz kod wygląda tak: #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int losowanie() { int liczba =( rand() % 11 ) + 50; }
int main() { srand( time( NULL ) ); int wynik = losowanie(); cout << "Liczby ktore zostaly wyslosowane z przedzialu 50-60 to: " << wynik << endl; return 0; } I działa :) Dzięki wielkie :) Teraz mam kolejny problem z kolejnym zadaniem z tej lekcji. Napisz funkcję, która losuje liczbę z przedziału, który zostanie podany poprzez argumenty funkcji. Przetestuj funkcję w poniższy sposób: #include <iostream> #include <cstdlib> #include <ctime>
int main() { srand( time( NULL ) ); int start; std::cin >> start; int stop; std::cin >> stop; int ile = 20; do { std::cout << wylosuj( start, stop ) << std::endl; ile--; } while( ile > 0 ); return 0; } I mój kod jak narazie wygląda tak: I mam niezłe problemy z nim :( #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int wylosuj( int a, int b ) { srand( time( NULL ) ); int losuj =( rand() % a ) + b; } int main() { srand( time( NULL ) ); cout << "Wpisz liczbe a: " << endl; int start; cin >> start; cout << "Wpisz liczbe b: " << endl; int stop; cin >> stop; int ile = 20; do { cout << wylosuj()( start, stop ) << endl; ile--; } while( ile > 0 ); return 0; } |
|
Berux |
» 2013-07-09 17:25:29 Spójrz na inne tematy, w których użytkownicy mają problem z tym samym zadaniem. Wpisz w wyszukiwarkę na stronie np.: "zadanie z lekcji 16", lub po prostu: "lekcja 16". Poszukaj i porównaj swój kod z innymi. Jak czegoś nie będziesz rozumiał - zapytaj się o to. |
|
pekfos |
» 2013-07-09 18:08:28 srand(time(NULL)) powinno być wywołane raz, a wywołanie funkcji wylosuj() jest nieprawidłowe. Przedział dalej źle określony.. Pseudolosowe liczby całkowiteNajlepiej przeczytaj od nowa, a potem kontynuuj pisanie programu.. |
|
« 1 » |