Temat 17 zadanie
Ostatnio zmodyfikowano 2017-05-12 11:52
Karol98 Temat założony przez niniejszego użytkownika |
Temat 17 zadanie » 2017-05-10 18:22:17 Cześć, 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 mogę sobie poradzić z tym zadaniem. Mój kod #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int losowanaliczba() { srand( time( NULL ) ); int a =( rand() % 10 ) + 50; return a; } int main() { cout << "Wylosowana liczba " << losowanaliczba() << endl; return 0; }
działa prawidłowo ale problem jest z wywołaniem go kilka razy. Próbuje tak ale nie może się udać. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int losowanaliczba() { srand( time( NULL ) ); a =( rand() % 10 ) + 50; return a; } int main() { char b = 0; do { cout << "Wylosowana liczba " << losowanaliczba() << endl; b++; } while( b < 5 ); return 0; }
Program pokazuje 5 takich samych liczb. Proszę o pomoc. |
|
wilkoo13 |
» 2017-05-10 19:07:12 srand niech się wykona tylko na raz na samym początku programu |
|
Karol98 Temat założony przez niniejszego użytkownika |
Pomogło po części :) » 2017-05-11 12:33:09 Dzięki za odpowiedź, trochę poprawione ale pojawił się nowy problem za każdym razem losuje te same liczby Obecny kod: include < iostream > #include <cstdlib> #include <ctime> using namespace std; int funkcja() { srand( time( NULL ) ); } int losowanaliczba() { int a =( rand() % 10 ) + 50; return a; } int main() { char b = 0; do { cout << "Wylosowana liczba " << losowanaliczba() << endl; b++; } while( b < 5 ); return 0; }
|
|
Karol98 Temat założony przez niniejszego użytkownika |
Nie wiem » 2017-05-11 12:54:24 Poprawiłem kod i zaczął działać ale nie wiem dlaczego czy mógłby mi ktoś to wytłumaczyć. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int funkcja() { srand( time( NULL ) ); } int losowanaliczba() { int a =( rand() % 10 ) + 50; return a; } int c = funkcja(); int main() { char b = 0; do { cout << "Wylosowana liczba " << losowanaliczba() << endl; b++; } while( b < 5 ); return 0; }
|
|
darko202 |
» 2017-05-11 13:52:22 |
|
wilkoo13 |
» 2017-05-11 14:11:05 srand( time( NULL ) ); niech to się wykona tylko raz na samym początku programu. Ta funkcja nie zwraca żadnej wartości. Sprawia zaś że przy każdym uruchomieniu programu liczby będa inne. int c = funkcja(); 1. Funkcja "funkcja()" nie zwraca żadnej wartości. 2. Nawet jakby zwracała wartość, to funkcja wyżej jej nie zwraca. int main() { srand( time( 0 ) ); } Funkcja srand( time( 0 ) ); tak jak wyżej. Wystarczy umieścić ją tylko raz w kodzie na samym początku wewnątrz int main() {...} |
|
Karol98 Temat założony przez niniejszego użytkownika |
Dziękuje :) » 2017-05-11 15:35:13 Dziękuje bardzo za wszystkie odpowiedzi wszystko działa jak należy a kod ostatecznie wygląda tak. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; int losowanaliczba() { int a =( rand() % 10 ) + 50; return a; } int main() { srand( time( NULL ) ); char b = 0; do { cout << "Wylosowana liczba " << losowanaliczba() << endl; b++; } while( b < 5 ); return 0; }
|
|
Panniikt |
» 2017-05-11 18:30:09 Z góry przepraszam że nie zakładam nowego tematu ale mam problem również z tą lekcją, mianowicie z zadaniem pierwszym. Nie wiem jaki dać argument do pętli żeby działała przy wpisywaniu znaków różnych od liczby Oto mój kod. #include <iostream> #include <cstdlib>
using namespace std;
int wczytajLiczbe() { do { int x; cin.clear(); cin.sync(); cin >> x; return x; } while( cin.fail() ); }
int main( int argc, char * argv[] ) { cout << "Podaj liczbe; " << endl; int liczba = wczytajLiczbe(); cout << "podales liczbe: " << liczba << endl; system( "PAUSE" ); return 0; }
|
|
« 1 » 2 |