CCbolt Temat założony przez niniejszego użytkownika |
Lekcja 2.19 » 2016-07-26 19:12:06 Mam problem z wyświetleniem losowej liczby za każdym razem gdy próbuje nazwać jakoś ( rand() % b ) + a; 2 kod działa ale kiedy w pierwszym mam zawsze 999 pozycji jednej liczby. ps. Polecicie coś gdzie są materiały z funkcjami, tablicami tak aby można było przerobić rozwiązane zadania i sprawdzić co i jak działa od podszewki, po samych lekcjach ciężko jest mi cokolwiek samemu wymyślić, muszę przewertować kilka różnych zadań zanim mnie oświeci i to nie zawsze. int wylosujLiczby( int tablica[], int rozmiar, int a, int b ) { int l = 0; do { int liczba =( rand() %( b - a + 1 ) ) + a; tablica[ l ] = liczba; l++; } while( l < rozmiar ); }
int wypiszLiczby( int tablica[], int rozmiar ) { int liczba; int l = 0; do { cout << "Pozycja nr: " << l + 1 << " Liczba losowana: " << liczba << endl; l++; } while( l < rozmiar );
#include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
int wylosujLiczby( int tablica[], int rozmiar, int a, int b ) { int l = 0; do { tablica[ l ] =( rand() %( b - a + 1 ) ) + a; l++; } while( l < rozmiar ); }
int wypiszLiczby( int tablica[], int rozmiar ) { int l = 0; do { cout << "Pozycja nr: " << l + 1 << " Liczba losowana: " << tablica[ l ] << endl; l++; } while( l < rozmiar ); } int obliczSume( int tablica[], int rozmiar )
{ int l = 0; int suma = 0; do { suma += tablica[ l ]; l++; } while( l < rozmiar ); return suma; }
int main() { srand( time( NULL ) ); int tablica[ 999 ]; wylosujLiczby( tablica, 999, 4, 10 ); wypiszLiczby( tablica, 999 ); int iSuma = obliczSume( tablica, 999 ); std::cout << "Suma liczb wynosi: " << iSuma << std::endl; return 0; }
[ cpp ] |
|
kistel66 |
» 2016-07-26 19:16:40 Funkcja wylosuj nie zwraca żadnej wartości (bez słówka return). Zrób z niej albo voida, albo każ coś zwrócić. Funkcja wypiszliczby powinna być typu void, a nie int, bo tu nie ma co zwracać. Popraw to i myślę, że będzie działało |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-07-26 19:28:05 Jezu no tak, dzięki. ps.jednak dalej mam losową "stałą" liczbę przez 999 razy w zakresie od 4 do 10 ale wynik wychodzi śmieszczny "Pozycja nr: 998 Liczba losowana: 5 Pozycja nr: 999 Liczba losowana: 5 Suma liczb wynosi: 7029 " |
|
Szymon2727 |
» 2016-07-26 20:37:58 Jak losowa? Jak już to pseudolosowa, a pseudolosowanie ma to do siebie w przeciwności do losu, że jest określona i możesz mieć cały czas te same liczby. Tutaj to nie wiem czego się czepiasz, jaka stała? Dwa razy wylosowałeś 5 i już stała. Czasami mogłeś mieć 4, czasami 10 i to suma sumarum dało 7029. Z czego widzę to program losuje 999 liczb z zakresu od 4-10 i je do siebie dodaje, więc ta liczba jest jak najbardziej na miejscu. |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-07-26 21:24:15 @Szymon2727 Napisałem w pierwszym poście, w pierwszym zdaniu że występuje tylko jedna liczba w 999 pozycjach tylko i wyłącznie gdy próbuję randa jakoś nazwać i tej nazwy używać zamiast np.tabela[l]. Wrzuć mój drugi kod podmień początek z pierwszymi funkcjami na samym początku jakie podałem i zrozumiesz o co mi chodzi. A czepiam się w zasadzie wszystkiego, takie czepianie o niuanse dzięki kilku osobom z forum pozwoliło mi zrozumieć lepiej niektóre zjawiska. |
|
carlosmay |
» 2016-07-26 21:32:16 Jeśli to Ci poprawi humor to kompilowałem twój pierwszy kod po poprawkach typów funkcji, i program losował różne liczby. występuje tylko jedna liczba w 999 pozycjach tylko i wyłącznie gdy próbuję randa jakoś nazwać i tej nazwy używać zamiast np.tabela[l]. |
Wrzuć ten konkretny kod z komentarzami, gdzie i co jest nie po twojej myśli. |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2016-07-26 22:11:51 Mam nadzieje że jakiś głupi błąd popełniłem i cała moja filozofia jest dobra. #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
void wylosujLiczby( int tablica[], int rozmiar, int a, int b ) { int l = 0; do { int liczba =( rand() %( b - a + 1 ) ) + a; tablica[ l ] = liczba; l++; } while( l < rozmiar ); }
void wypiszLiczby( int tablica[], int rozmiar ) { int liczba; int l = 0; do { cout << "Pozycja nr: " << l + 1 << " Liczba losowana: " << liczba << endl; } int obliczSume( int tablica[], int rozmiar ) { int l = 0; int suma = 0; do { suma += tablica[ l ]; l++; } while( l < rozmiar ); return suma; } int main() { srand( time( NULL ) ); int tablica[ 999 ]; wylosujLiczby( tablica, 999, 4, 10 ); wypiszLiczby( tablica, 999 ); int iSuma = obliczSume( tablica, 999 ); std::cout << "Suma liczb wynosi: " << iSuma << std::endl; return 0; }
... Pozycja nr: 965 Liczba losowana: 4 Pozycja nr: 966 Liczba losowana: 4 Pozycja nr: 967 Liczba losowana: 4 Pozycja nr: 968 Liczba losowana: 4 Pozycja nr: 969 Liczba losowana: 4 Pozycja nr: 970 Liczba losowana: 4 Pozycja nr: 971 Liczba losowana: 4 Pozycja nr: 972 Liczba losowana: 4 Pozycja nr: 973 Liczba losowana: 4 Pozycja nr: 974 Liczba losowana: 4 Pozycja nr: 975 Liczba losowana: 4 Pozycja nr: 976 Liczba losowana: 4 Pozycja nr: 977 Liczba losowana: 4 Pozycja nr: 978 Liczba losowana: 4 Pozycja nr: 979 Liczba losowana: 4 Pozycja nr: 980 Liczba losowana: 4 Pozycja nr: 981 Liczba losowana: 4 Pozycja nr: 982 Liczba losowana: 4 Pozycja nr: 983 Liczba losowana: 4 Pozycja nr: 984 Liczba losowana: 4 Pozycja nr: 985 Liczba losowana: 4 Pozycja nr: 986 Liczba losowana: 4 Pozycja nr: 987 Liczba losowana: 4 Pozycja nr: 988 Liczba losowana: 4 Pozycja nr: 989 Liczba losowana: 4 Pozycja nr: 990 Liczba losowana: 4 Pozycja nr: 991 Liczba losowana: 4 Pozycja nr: 992 Liczba losowana: 4 Pozycja nr: 993 Liczba losowana: 4 Pozycja nr: 994 Liczba losowana: 4 Pozycja nr: 995 Liczba losowana: 4 Pozycja nr: 996 Liczba losowana: 4 Pozycja nr: 997 Liczba losowana: 4 Pozycja nr: 998 Liczba losowana: 4 Pozycja nr: 999 Liczba losowana: 4 Suma liczb wynosi: 6956
Process returned 0( 0x0 ) execution time : 1.842 s Press any key to continue. |
|
carlosmay |
» 2016-07-26 22:32:54 W tym co wkleiłeś brakuje fragmentu kodu. int liczba; int l = 0; do { cout << "Pozycja nr: " << l + 1 << " Liczba losowana: " << liczba << endl; }
|
To co chcesz zrobić nie ma sensu. Używaj tablicy. Sensownie nazywaj zmienne. int liczba =( rand() %( b - a + 1 ) ) + a; tablica[ l ] = liczba; l++;
|
mnie też tablica[ l++ ] = rand() %( koniecZakresu - poczatekZakresu + 1 ) + poczatekZakresu;
|
|
« 1 » 2 |