[Lekcja 18] Losowanie tych samych liczb.
Ostatnio zmodyfikowano 2014-10-25 14:52
lukhol Temat założony przez niniejszego użytkownika |
[Lekcja 18] Losowanie tych samych liczb. » 2014-10-24 00:17:57 witam, mam problem z zadaniu domowym z lekcji 18. Program, który napisałem losuje zawsze ta samą liczbę i nie wiem czym jest to spowodowane ponieważ w kodzie wpisane mam srand( time( NULL ) ); #include <iostream> #include <cstdlib> #include <ctime> #include<windows.h>
using namespace std;
int wylosujLiczby( int * tablicaa, int wypelnienie, int a, int b ) { int pp, dlugoscPrzedzialu, y; dlugoscPrzedzialu =( b - a ) + 1; y =( b - dlugoscPrzedzialu + 1 ); pp = rand() % dlugoscPrzedzialu + y; for( int i = 0; i < wypelnienie; i++ ) { tablicaa[ i ] = pp; } return 0; } int obliczSume( int * tabliczka, int wypelnienie ) { int sumka = 0; for( int i = 0; i < wypelnienie; i++ ) { sumka = sumka + tabliczka[ i ]; } return sumka; }
int wypiszLiczby( int * tablica, int wypelnienie ) { for( int i = 0; i < wypelnienie; i++ ) { cout << i + 1 << ". " << tablica[ i ] << endl; } return 0; } int main() { srand( time( NULL ) ); int tablica[ 999 ]; wylosujLiczby( tablica, 999, 4, 10 ); wypiszLiczby( tablica, 999 ); int iSuma = obliczSume( tablica, 999 ); cout << "Suma liczb wynosi: " << iSuma << endl; return 0; }
} |
|
Rashmistrz |
» 2014-10-24 07:21:32 pp = rand() % dlugoscPrzedzialu + y; Przypisałeś do "pp" wylosowaną liczbę, a potem przypisujesz ciągle tą samą. tablicaa[ i ] = pp; //A całość tej funkcji da //się zmieścić w 3 liniach.//Trochę przesadziłem. :P //Ale i tak się da mocno //skrócić... |
|
Memento96 |
» 2014-10-24 08:25:02 Losowanie liczb wg. mnie powinno się odbywać w pętli for, wtedy wszystko działa :) |
|
lukhol Temat założony przez niniejszego użytkownika |
» 2014-10-24 11:15:31 Dobra widzę błąd. A co do skrócenia funkcji, niestety narazie mam problem z pisaniem krótkich kodów :D |
|
Rashmistrz |
» 2014-10-24 16:22:31 A co do skrócenia funkcji, niestety na razie mam problem z pisaniem krótkich kodów :D |
Nic nie szkodzi. Mi głównie chodzi o "składanie" kodu by był bardziej "kompaktowy". |
|
wirusomaniak |
» 2014-10-25 12:36:32 ja tę funkcję zrobiłem tak int wylosujLiczby( int t[], int iRozmiar, int b, int c ) { int i = 0; do { t[ i ] =( rand() %( c - b + 1 ) ) + b; i++; } while( i < iRozmiar ); return 0; } |
|
Rashmistrz |
» 2014-10-25 14:52:36 :F Skoro znasz for : int wylosujLiczby( int t[], int iRozmiar, int b, int c ) { for( int i = 0; i < iRozmiar; ) t[ i++ ] =( rand() %( c - b + 1 ) ) + b; return 0; } Ale się już nie rozdrabniajmy. Program działa? Działa! A zabiegi kosmetyczne jak zabiegi kosmetyczne, nie trzeba ich wcale robić. :D |
|
« 1 » |