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

[C++] Lekcja 16 - Pseudolosowe liczby całkowite, problem z srand

Ostatnio zmodyfikowano 2016-08-26 14:19
Autor Wiadomość
NitjSefni
Temat założony przez niniejszego użytkownika
[C++] Lekcja 16 - Pseudolosowe liczby całkowite, problem z srand
» 2016-08-24 22:29:08
Cześć wszystkim!

Na wstępie zaznaczę może, że dopiero raczkuję (po raz n'ty) w C++, ale niestety natknałem sie na pewien problem przy lekcji 16 - pseudolosowe liczby calkowite.
Sytuacja wyglada następująco - na podstawie lekcji sklecilem sobie ponizszy 1 kod.
Wynik jest bardzo dziwny... Kompilacja powyzszego kodu uruchamia mi aplikacje z poniższego kodu nr 2.

Pierwszy kod jest ctrl+c, ctrl+v z lekcji, pierwszy lepszy otworzony plik.
Korzystam z Dev-C++, na kompilatorze TDM-GCC 4.9.2 64-bit Release. System to W10 64 bit.
W ramach ciekawostki moge dodac, że ostatnio usuwalem partycje na której stal Windows Server, nie wiem czy to ma jakies powiazanie, ale moze.

A wiec do brzegu! Wiecie czym to jest spowodowane? Jak temu zaradzić?
Co ciekawe ostatni kod odpala się prawidłowo:

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
    srand( time( NULL ) );
    cout << "Wylosowanie pierwsze: " << rand() << endl;
    return 0;
}
[ cpp ]

[ cpp ]
#include <iostream>
#include <conio.h>
#include <cstdlib>

using namespace std;

int main()
{
    cout << "Pierwsze losowanie " << rand() << endl;
    int liczba = rand();
    cout << "Drugie losowanie " << liczba << endl;
    liczba = rand();
    cout << "Trzecie losowanie " << liczba << endl;
    liczba = rand();
    cout << "Czwarte losowanie " << liczba << endl;
    return 0;
}
[ cpp ]


[ cpp ]
#include <conio.h>
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <stdlib.h>

using namespace std;


int main()
{
    srand( time( NULL ) );
    cout << "Pierwsza gra interaktywna" << endl;
    cout << "___________ :) _____________" << endl;
    cout << " " << endl;
    //ten akapit odpowiada za losowanie przypadkowej liczby
    srand(( int ) time( NULL ) );
    int nWylosowana = rand() % 100 + 1;
    std::cout << "Wylosowano liczbe z przedzialu 0-100." << std::endl;
    int nProba;
    cout << "Sprobuj odgadnac jaka liczbe wylosowal dla Ciebie komputer :)" << endl;
    cin >> nProba;
    cout << " " << endl;
    while(( nProba != nWylosowana ) and( nProba > 0 ) and( nProba <= 100 ) )
   
   
   
    {
        if( nProba < nWylosowana )
             cout << "Wskazana przez Ciebie liczba jest za mala" << endl;
        else
             cout << "Wskazana przez Ciebie liczba jest za duza" << endl;
       
        cout << "Probuj dalej :) " << endl;
        cin >> nProba;
    }
   
   
    cout << "Brawo :) udalo Ci sie odgadnac liczbe :)" << endl;
    getch();
   
    return 0;
}

[ cpp ]
P-151072
marcolo2307
» 2016-08-25 13:03:38
Stwórz nowy projekt. Zamiast Dev'a lepiej zainstaluj CodeBlocks.
P-151097
Banneq
P
» 2016-08-25 16:27:57
A, i
rand() % 100 + 1
 nie losuje od 0 do 100, tylko od 1 do 100. Do kazdej mozliwej reszty dzielenia przez 100 dodajesz 1, wiec od 0+1 do 99+1 ;)
P-151108
NitjSefni
Temat założony przez niniejszego użytkownika
» 2016-08-25 18:46:11
Code:Blocks działa! Dzięki ;)

A tak z ciekawości już - są jakieś istotne różnice między Code, a Dev?
P-151111
marcolo2307
» 2016-08-26 14:19:44
Dev nie jest już wspierany i przynajmniej według mnie ma słaby debugger. Poza tym Code::Blocks wydaje mi się łatwiejsze w zarządzaniu, szczególnie przy większych projektach.

Jeśli chodzi o pisanie kodu to nie ma różnic, bo domyślnie korzystają z tego samego kompilatora, co najwyżej innych wersji.
P-151129
« 1 »
  Strona 1 z 1