Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Losowanie liter

Ostatnio zmodyfikowano 2014-10-19 16:24
Autor Wiadomość
b0r0
Temat założony przez niniejszego użytkownika
[C++] Losowanie liter
» 2014-10-18 15:52:48
Witam mam sporą zagwozdkę z funkcja która w oparciu o rand miała mi losować liczy i litery (tylko duże)
Problem polega na tym że na 344 444 losowania nie pojawiają się pewne litery (kompilowałem ponad 20 razy), na razie nigdy nie mogłem znaleźć T i S.


C/C++
Struktura ** losowanie( int N )
{
    srand( time( NULL ) );
    Struktura ** tab;
    tab = new Struktura *[ N ];
   
    for( int i = 0; i < N; i++ )
    {
        tab[ i ] = new Struktura;
        ( tab[ i ] )->a =( rand() % 1000001 );
        ( tab[ i ] )->b =( rand() & 25 ) + 65; ///losowanie znaków na podstawie kodów ascii
        ( tab[ i ] )->c = 0;
    }
   
    return tab;
}

Ma ktoś pomysł co może być przyczyną?
Testowałem to także na innej maszynie i to samo.
P-118779
Monika90
» 2014-10-18 15:55:23
To rand() & 25 jest źle, zamień na rand() % 26
P-118781
b0r0
Temat założony przez niniejszego użytkownika
» 2014-10-18 16:01:26
hmm tak S się faktycznie pojawia ale tak samo i " [ " co jest też problemem
T dalej nie występuje
P-118784
1aam2am1
» 2014-10-18 16:49:33
C/C++
( tab[ i ] )->b =( rand() % 26 ) + 65;
Edit. Ta linijka kody jest w 100% poprawna, to że niema poszczególnych liter nie oznacza że kod jest zły to tylko przypadek lub wina platformy.

Edit 2. srand( time( NULL ) ); umieść na początku main()
P-118787
b0r0
Temat założony przez niniejszego użytkownika
» 2014-10-18 17:30:58
W dalszym ciągu nie wiem jak to możliwe ale na 9 344 444 wylosowane litery nie ma : S T X G (to tylko przykłady)

1aam2am1 nabijasz posty czy jak? bo przecież z taką linijką kodu tu przyszedłem
P-118792
b0r0
Temat założony przez niniejszego użytkownika
» 2014-10-18 17:31:59
Nie ma może innego sposobu na takie losowanie? chodzi tylko o losowanie dużych liter alfabetu, bez polskich znaków
P-118793
oputyk
» 2014-10-18 17:44:13
ASCII
Pomyśl...
P-118794
Monika90
» 2014-10-18 18:15:08
jak już pisałam, powinno być tak
C/C++
tab[ i ]->b = rand() % 26 + 65; ///losowanie znaków na podstawie kodów ascii
wyświela Ci się znak [ to znaczy że masz błąd w zupełnie innej części kodu, (a może Twój komputer nie używa ASCII, tylko jakiegoś innego kodowania?)

P-118795
« 1 » 2
  Strona 1 z 2 Następna strona