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

Program losujący litery

Ostatnio zmodyfikowano 2011-07-25 16:49
Autor Wiadomość
capajera18
Temat założony przez niniejszego użytkownika
Program losujący litery
» 2011-07-25 15:07:22
witam wszystkich
mam taka sprawe zwiazana z losowaniem literek z zakresu
od "a" do "z"

na poczatek mam cos takieg
C/C++
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
    srand( time( NULL ) );
   
    char literki =( rand() % 'z' ) + 'a';
   
    cout << "Wylosowanie litreki " << literki << endl;
    cout << "Wylosowanie litreki " << literki << endl;
    cout << "Wylosowanie litreki " << literki << endl;
    cout << "Wylosowanie litreki " << literki << endl;
   
    return 0;
}

wywolalem zmkienna 4 i wiadomo 4 razy wylosowalo mi jakis znak tylko ze z poza zakresu "a-z"

moze ktos mo pomoc napisac owy program by losowalo mi same literki z zakresu "a-z" ?
Nie chce gotowca
P-36958
Thud
» 2011-07-25 15:15:24
Po pierwsze - pętla for.
P-36963
McAffey
» 2011-07-25 15:15:39
Losuj nr literki Ascii, czyli losowanie rób w zakresie 97-122, a potem rób rzutowanie. A po za tym losowanie musisz robić przed każdym wypisywaniem wyniku, bo za każdym razem wypiszesz to samo.
P-36964
akwes
» 2011-07-25 15:18:44
@McAffey

Przecież to robi! Char to tak naprawdę całkowity typ danych 0-255 jeśli jest unsigned, kompilator zawsze potrafi niejawnie tak jak w tym przypadku zamienić 'a' na 97, oraz 'z' na 122.
P-36967
McAffey
» 2011-07-25 15:20:58
A to przepraszam, dzięki za uświadomienie :)
P-36969
akwes
» 2011-07-25 15:23:50
Tylko o jednym nie pomyślał, że maszynka może wylosować 96 + 122 =  218, a to jest poza zakresem.

Spróbuj tego:
C/C++
unsigned char literki = 'a' +( rand() % 25 );

Faktycznie pierwszą literą jest 'a', ale! Liter w alfabecie jest 25 (czyli 'a'+(0-24)), a kolega losuje liczbę z zakresu 97 i dodaje do niej 122.
Należy losować liczby z różnicy, czyli ewentualnie dla jasności:

C/C++
unsigned char literki = 'a' +( rand() %( 'z' - 'a' ) );
P-36971
capajera18
Temat założony przez niniejszego użytkownika
» 2011-07-25 15:26:59
o kurcze :-0 nie wiedzialem ze tak mozna modyfikowac kod jak powyzej ukazano :-)
P-36975
akwes
» 2011-07-25 15:32:12
C/C++
unsigned char literki = 'a' +( rand() %( 'z' - 'a' ) );
Dla kompilatora to i tak będzie:
C/C++
unsigned char literki = 97 + rand() % 25;

Ale skoro nam się nie chce czegoś liczyć to niech sam policzy :P
P-36977
« 1 » 2
  Strona 1 z 2 Następna strona