Program losujący litery
Ostatnio zmodyfikowano 2011-07-25 16:49
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 #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 |
|
Thud |
» 2011-07-25 15:15:24 Po pierwsze - pętla for. |
|
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. |
|
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. |
|
McAffey |
» 2011-07-25 15:20:58 A to przepraszam, dzięki za uświadomienie :) |
|
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: 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: unsigned char literki = 'a' +( rand() %( 'z' - 'a' ) );
|
|
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 :-) |
|
akwes |
» 2011-07-25 15:32:12 unsigned char literki = 'a' +( rand() %( 'z' - 'a' ) );
Dla kompilatora to i tak będzie: unsigned char literki = 97 + rand() % 25;
Ale skoro nam się nie chce czegoś liczyć to niech sam policzy :P |
|
« 1 » 2 |