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

[C++] rand() i zabawa w "zgadywanie liczb"

Ostatnio zmodyfikowano 2010-06-09 20:56
Autor Wiadomość
SeaMonster131
Temat założony przez niniejszego użytkownika
[C++] rand() i zabawa w "zgadywanie liczb"
» 2010-06-09 20:03:17
Mam taki mały i zapewne prosty problem. Chce wylosować liczbe :D
zrobiłem to tak:
C/C++
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    int i = 0;
    i = rand() % 20;
    cout << i << endl;
    return 0;
}
Lecz zawsze i = 1... a jeśli zamiast 20 dam więcej niż 41 to "wylosowana" liczba to 41... Szukałem w google ale nie mogłem nigdzie znaleźć oprócz tego, że przeczytałem o srand() lub coś takiego...
P-17838
ison
» 2010-06-09 20:07:01
na początku programu wywołaj funkcję
C/C++
srand( time( 0 ) );
P-17839
lenrokskate
» 2010-06-09 20:09:19
<< sorry, jednak działa >>
P-17840
ison
» 2010-06-09 20:09:54
możesz mi wytłumaczyć lenrokskate?
przecież NULL jest zdefiniowane jako 0
P-17841
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2010-06-09 20:16:16
Heh, dzięki za pomoc :D
Faktycznie to łatwe było...dla Was... ;)
P-17842
szyx_yankez
» 2010-06-09 20:19:25
Masz tu funkcję odpowiedzialną za losowanie.
C/C++
int losuj( int min, int max )
{
   
    return( rand() %( max + 1 - min ) ) + min;
   
}
//zostanie wylosowana liczba z przedziału min-max
P-17843
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2010-06-09 20:37:19
A jak napisać takie jakby "zgadywanie liczb"?
Zrobiłem tak:
C/C++
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    srand( time( 0 ) );
    int i = 0;
    int e = 0;
    i = rand() % 100;
    do {
        cout << "Jaka to liczba? >>  ";
        cin >> e;
    } while( e != i );
   
    if( e = i ) { cout << "Tak! To ta liczba!" << endl; }
    if( e < i ) { cout << "Za malo!"; }
    if( e > i ) { cout << "Za duzo!"; }
   
    return 0;
}
Tylko że nie wyświetla sie te "za dużo" albo "za mało" itd...
P-17844
szyx_yankez
» 2010-06-09 20:47:35
Bo Ci się to nigdy nie wyświetli gdyż: masz pętle do while która trwa dopuki wylosowana liczba = liczba podana przez gracza, gdy spełni się ten warunek wychodzi z pętli i w takim wypadku zostanie spełniony tylko warunek :
C/C++
if( e = i ) { cout << "Tak! To ta liczba!" << endl; }
Aby osiągnąć to co chcesz musisz te trzy warunki na końcu programu wsadzić do pętli do while.
Czyli:
C/C++
#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    srand( time( 0 ) );
    int i = 0;
    int e = 0;
    i = rand() % 100;
    do {
        cout << "Jaka to liczba? >>  ";
        cin >> e;
        if( e = i ) { cout << "Tak! To ta liczba!" << endl; }
        if( e < i ) { cout << "Za malo!"; }
        if( e > i ) { cout << "Za duzo!"; }
    } while( e != i );
   
   
    return 0;
}
P-17845
« 1 » 2
  Strona 1 z 2 Następna strona