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ść
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 ;>
P-36991
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.

C/C++
for( inicjacja zmiennej; warunek; i co ma ona zrobic )

???


C/C++
#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
P-36993
SeaMonster131
» 2011-07-25 16:22:01
Zobacz jak to działa:

C/C++
for( int i = 0; i < 10; i++ )
     cout << i << endl;

http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-for/294
P-36996
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 ??

C/C++
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
P-37001
capajera18
Temat założony przez niniejszego użytkownika
» 2011-07-25 16:45:22
ok juz mam
jest ok :-) doszedlem.

C/C++
#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
P-37006
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:
C/C++
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
C/C++
literki++;
oznacza tyle co:
C/C++
literki = literki + 1;
A to z literki 'a' robi literkę 'b'.

Musisz zastosowac osobna zmienna

C/C++
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.

C/C++
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:
C/C++
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.
C/C++
// naprzyklad
int a = 3 * 9;
// w zmiennej a tryzmamy liczbę 27, a nie 3*9.
int b = a / 3; // tutaj kompilator policzy ze a/3 = 9
// czyli tak jakby zrobic
b = 9;
P-37007
1 « 2 »
Poprzednia strona Strona 2 z 2