Program losujący litery
Ostatnio zmodyfikowano 2011-07-25 16:49
Elaine |
» 2011-07-25 16:14:18 Najlepsze jest to, że popełniłeś błąd w obliczeniach, liter w alfabecie łacińskim jest dwadzieścia sześć. Faktycznie lepiej, byś zostawił liczenie kompilatorowi, on takiego błędu nie zrobi ;> |
|
capajera18 Temat założony przez niniejszego użytkownika |
» 2011-07-25 16:17:10 i teraz kolejny problem, z petla while sobie poradzilem ale z for nie moge sobie poradzic, mowiac wprost , mecze sie z nia od dluzszego czasu.
for( inicjacja zmiennej; warunek; i co ma ona zrobic )
???
#include <iostream> #include <conio.h> #include <cstdlib> #include <ctime>
using namespace std;
int main() { srand( time( NULL ) ); unsigned char literki = 'a' +( rand() %( 'z' - 'a' ) ); for( int i = 0; literki <= 4; i-- ) { cout << literki << endl; } return 0; }
nic mi ta petla for nie mowi nie moge sobie wyobrazic jak ma sie zachowac, czy jak sie zachowuje
w programie chce by wyswietlila mi 4 razy wynik losowania, ale sa nie wiem co pisze w tej petli,
help me |
|
SeaMonster131 |
» 2011-07-25 16:22:01 |
|
capajera18 Temat założony przez niniejszego użytkownika |
» 2011-07-25 16:33:28 nic i nie wychodzi
czy to ma byc cos w tym rodzaju ??
Powiedz czy cieplo czy zimno ??
unsigned char literki = 'a' +( rand() %( 'z' - 'a' ) ); for( literki = 0; literki < 4; literki++ ) { cout << literki << endl; }
wiem ze to jest zle bo chyba pokazuje mi 4 pierwsze znaki kodu ascii |
|
capajera18 Temat założony przez niniejszego użytkownika |
» 2011-07-25 16:45:22 ok juz mam
jest ok :-) doszedlem.
#include <iostream> #include <conio.h> #include <cstdlib> #include <ctime>
using namespace std;
int main() { srand( time( NULL ) ); unsigned char literki = 'a' +( rand() %( 'z' - 'a' ) ); for( int ile = 0; ile < 4; ile++ ) { cout << literki << endl; } return 0; }
dzieki za pomoc |
|
akwes |
» 2011-07-25 16:49:08 @Iname Błąd jak błąd, pisałem z palca a liczba zapomniałem że rand()%25 to 0-24 a nie 0-25 ;p A więc tak, co do Twojego kodu: unsigned char literki = 'a' +( rand() %( 'z' - 'a' ) ); for( literki = 0; literki < 4; literki++ ) { cout << literki << endl; } |
Nie wolno Ci zmieniać wartości zmiennej "literki". Fragment kodu oznacza tyle co: A to z literki 'a' robi literkę 'b'. Musisz zastosowac osobna zmienna unsigned char literki = 'a' +( rand() %( 'z' - 'a' ) ); for( int i = 0; i < 4; i++ ) { cout << literki << endl; }
Dany kod wypisze tę samą literę cztery razy. Dlaczego tę samą zapytasz? Bo wartość zmiennej ustaliłeś raz. Aby wylosować cztery, losowe literki, należy losowanie włączyć do funkcji. unsigned char literki; = 'a' +( rand() %( 'z' - 'a' ) ); for( int i = 0; i < 4; i++ ) { cout << literki << endl; literki = 'a' +( rand() %( 'z' - 'a' ) ); }
Dlaczego tak? Ponieważ w programowaniu to nie działa tak że: unsigned char literki; = 'a' +( rand() %( 'z' - 'a' ) );
Że zawsze literki będzie równe "'a' +( rand() %( 'z' - 'a' ) )". W momencie kiedy używamy znaczka "=", kompilator oblicza jaka jest wartość wyrażenia po prawej stronie i do zmiennej literki wstawia liczbę a nie wyrażenie. int a = 3 * 9;
int b = a / 3;
b = 9;
|
|
1 « 2 » |