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

[C++] Generowanie liczby

Ostatnio zmodyfikowano 2013-02-01 23:44
Autor Wiadomość
Szustarol
Temat założony przez niniejszego użytkownika
[C++] Generowanie liczby
» 2013-01-31 20:19:24
Witam napisałem taki oto programik:

C/C++
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    unsigned char a;
   
    cout << "====================================" << endl;
    cout << "======GENERATOR LOSOWYCH LICZB======" << endl;
    cout << "====================================" << endl;
    cout << "Podaj zakres liczb do wygenerowania:" << endl;
    cin >> a;
    cin.clear();
    cin.sync();
    cout << "Oto wygenerowana liczba: " << a << endl;
    cout << "PROSZE WCISNAC ENTER ABY" << endl;
    cout << "ZAKONCZYC DZIALANIE PROGRAMU" << endl;
    cout << "====================================";
   
    getch();
}
I mój problem jest taki, że niezależnie od zakresu liczb do generowania jaki podam, wygenerowana liczba jest zawsze taka sama, jak zrobić, aby za każdym razem była inna?


PS. Mógłby mi ktoś napisać szkic jakby mogło wyglądać coś w stylu ,,enter aby zamknąć" i ,,spacja aby wygenerować ponownie"? bo na razie mogę tylko zamknąć, a powtórzyć nie mogę.
P-75497
m4tx
» 2013-01-31 20:23:12
P-75498
Szustarol
Temat założony przez niniejszego użytkownika
Nie ogarniam,
» 2013-01-31 20:37:33
Ja jestem raczej początkujący i 90% rzeczy napisanych w tych tematach nie ogarniam ale napisałem takie coś:
C/C++
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
    unsigned char a;
   
    cout << "====================================" << endl;
    cout << "======GENERATOR LOSOWYCH LICZB======" << endl;
    cout << "====================================" << endl;
    cout << "Podaj zakres liczb do wygenerowania:" << endl;
    cin >> a;
    cin.clear();
    cin.sync();
    cout << "Oto wygenerowana liczba: " << a <<( rand() <( a + 1 ) ) << endl;
    cout << "PROSZE WCISNAC ENTER ABY" << endl;
    cout << "ZAKONCZYC DZIALANIE PROGRAMU" << endl;
    cout << "====================================";
   
    getch();
}
Z tego wynika, że generowana liczba będzie mniejsza od a+1, czyli może być równa liczbie a, jeśli się nie mylę?
Może mi ktoś łopatologicznie wytłumaczyć, co napisać do tego aby generowana liczba była za każdym razem inna, i jak dodać to,
aby po kliknięciu spacji liczba generowała się ponownie?


@edit
Coś chyba jest nie tak, bo z generowanych liczb nie wynika, że 1 jest dodawane do ,,a", tylko jest dodawane na końcu liczby do wygenerowania, jeśli jest ona mniejsza od 10
P-75499
jsc
» 2013-01-31 20:42:14
Wogóle ci brakuje rand () i srand ().
P-75500
Szustarol
Temat założony przez niniejszego użytkownika
» 2013-01-31 20:45:16
Że co?
P-75501
Szustarol
Temat założony przez niniejszego użytkownika
» 2013-01-31 21:04:32
Dobra zmodyfikowałem z (a+1) na "(rand() <= a )", ale generowana liczba jest wciąż taka sama (11) co tu może być nie-tak?
Oto kod aktualnego programu:
C/C++
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
    unsigned char a;
   
    cout << "====================================" << endl;
    cout << "======GENERATOR LOSOWYCH LICZB======" << endl;
    cout << "====================================" << endl;
    cout << "Podaj zakres liczb do wygenerowania:" << endl;
    cin >> a;
    cin.clear();
    cin.sync();
    cout << "Oto wygenerowana liczba: " << a <<( rand() <= a ) << endl;
    cout << "PROSZE WCISNAC ENTER ABY" << endl;
    cout << "ZAKONCZYC DZIALANIE PROGRAMU" << endl;
    cout << "====================================";
   
    getch();
}



Teraz dodatkowo zmieniłem unsigned char na unsigned int, i różnica jest taka, że generowana liczba jest liczbą podaną jako zakres generowanych liczb, z zerem na końcu.
P-75503
jsc
» 2013-01-31 21:16:29
srand ().
P-75505
Szustarol
Temat założony przez niniejszego użytkownika
» 2013-01-31 21:22:26
Czy chodzi o taką linijkę?

cout <<"Oto wygenerowana liczba: " << a << (srand( <= a )) << endl;

Mam taki błąd:
error: expected primary-expression before '<=' token|

Zapewne zrobiłem 90% źle bo nie ogarniam ale jakoś może do tego dojdę...




@edit

Poradziłem sobie bez rand() i srand(), zrobiłem to trochę inaczej, jednak nadal pozostaje kwestia, aby losowana liczba była za każdym razem inna. Kod teraz wygląda tak:
C/C++
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
    unsigned int a;
    unsigned int b;
   
    cout << "====================================" << endl;
    cout << "======GENERATOR LOSOWYCH LICZB======" << endl;
    cout << "====================================" << endl;
    cout << "Podaj zakres liczb do wygenerowania:" << endl;
    cin >> a;
    cin.clear();
    cin.sync();
    cout << "Oto wygenerowana liczba: " <<(( b > 0 ) <= a ) << endl;
    cout << "PROSZE WCISNAC ENTER ABY" << endl;
    cout << "ZAKONCZYC DZIALANIE PROGRAMU" << endl;
    cout << "====================================";
   
    getch();
}

P-75507
« 1 » 2 3
  Strona 1 z 3 Następna strona