[C++] Lekcja 16 - Pseudolosowe liczby całkowite, problem z srand
Ostatnio zmodyfikowano 2016-08-26 14:19
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: #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; 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 ]
|
|
marcolo2307 |
» 2016-08-25 13:03:38 Stwórz nowy projekt. Zamiast Dev'a lepiej zainstaluj CodeBlocks. |
|
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 ;) |
|
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?
|
|
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. |
|
« 1 » |