kynol Temat założony przez niniejszego użytkownika |
» 2015-03-07 02:35:07 @edit faktycznie, poczekaj
dobra dziala, dzieki mordo, mialem tam wstawic wlasnie to spr=true ale nie wstawilem, nie wiem czemu ;< no ale gdyby babcia miala wasy to by byla... :P
@edit 2
Znow wracam, dopisalem to spr=true; raz zadzialalo wyswietlilo te 3 liczby i i je ladnie wymieszalo a teraz dalej nie dziala :O |
|
Lora |
» 2015-03-07 02:40:05 Teraz raz działa, a raz nie. Chyba dlatego, że tworzysz tablicę tab i w niej są jakieś śmieci, które później porównujesz z elementami tablicy p. Możesz zrobić tak, zakładając, że w tablicy p, nie ma elementów -1. int * tab = new int[ pomoc ]; for( int i = 0; i < pomoc; i++ ) tab[ i ] = - 1;
W ogóle nie lepiej byłoby zrobić tablicę, która przechowuje wylosowane wcześniej liczby? |
|
Lora |
» 2015-03-07 02:45:10 Z tym co napisałem wyżej też nie działa? |
|
kynol Temat założony przez niniejszego użytkownika |
» 2015-03-07 02:46:39 Oj tam niewazne, grunt ze dziala, takie niedopatrzenie i program sie sypie :/ trzeba byc czujnym, dzieki za pomoc. Daje dzialajacy kod, moze komus sie w przyszlosci przyda #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int main() { srand( time( NULL ) ); int zmienna, pomoc = 15; for( int i = 0; i < pomoc; i++ ) { cout << "i= " << i << endl; zmienna++; } int * p = new int[ zmienna ]; for( int j = 0; j < pomoc; j++ ) { p[ j ] = j; } cout << "PO WYMIESZANIU: " << endl; int wylosowana; bool test; int * tab = new int[ zmienna ]; for( int i = 0; i < pomoc; i++ ) tab[ i ] = - 8; wylosowana =(( rand() % pomoc ) + 0 ); tab[ 0 ] = p[ wylosowana ]; cout << tab[ 0 ] << endl; for( int k = 1; k < pomoc; ) { wylosowana =(( rand() % pomoc ) + 0 ); test = true; for( int z = 0; z < pomoc; z++ ) { if( tab[ z ] == p[ wylosowana ] ) test = false; } if( test == true ) { tab[ k ] = p[ wylosowana ]; k++; } } for( int y = 1; y < pomoc; y++ ) cout << tab[ y ] << endl; delete[] p; delete[] tab; return 0; }
@edit w tym moim drugim programie tez wlasnie tej tablicy przypisalem jakies wartosci zeby smieci nie bylo a tutaj o tym zapomnialem :d |
|
aksen |
» 2015-03-07 02:57:03 Myślę, że to jest trochę złe podejście do tematu. Program będzie długo liczył przy większej ilości liczb.
Gdybyście mieli wypełnić taką tablicę np. milionem... miliardem liczb to wyglądałoby to tak: 1. program losuje kolejne liczby 2. sprawdza od początku tabeli czy liczby się nie powtarzają 3. zawartość tabeli rośnie i ilość obliczeń także Co będzie przy losowaniu ostatnich tysięcy liczb? Prawie wszystkie będą się powtarzały, więc losowanie i sprawdzanie trzeba będzie wielokrotnie powtarzać. Program będzie wykonywał się dość długo.
A co będzie przy losowaniu ostatniej liczby z miliona? Wszystkie inne liczby już były, wiec losujemy i przeszukujemy całą tablicę setki tysięcy razy aż ta jedyna się w końcu trafi. Koszmar obliczeniowy ;)
Inne, lepsze i prostsze podejście: Wpisać w pętli do tablicy kolejne liczby. Potem zrobić pętlę, która przejdzie od pierwszej komórki do ostatniej i dla każdej z nich wylosować numer komórki z którą zostanie zamieniona. Po tym działaniu mamy w tablicy liczby losowe bez powtórzeń.
|
|
kynol Temat założony przez niniejszego użytkownika |
» 2015-03-07 03:10:52 Moglbys napisac taki program i go tu wkleic? z checia bym mu sie przyjrzal
bo w koncu jak bedzie losowal numer komorki z ktora zostanie zamieniona to moze sie zdarzyc tak ze 2x wylosuje ta sama komorke i co wtedy ;P?
@edit
aaaaaa, zalapalem, komorka nie bedzie mogla sie powtorzyc bo zostanie zamieniona miejscami, czaje, bardzo fajny pomysl ;)
|
|
aksen |
» 2015-03-07 03:15:27 Przerób swój tak żeby wypełniał dowolną tablicę liczbami losowymi (wystarczy jakaś stała, którą można zmieniać ilość liczb) Potem porównamy czasy działania :)
Dziś już późno, popiszemy rano. |
|
kynol Temat założony przez niniejszego użytkownika |
» 2015-03-07 03:16:54 oczywiscie ze czas dzialania mojego programu bylby dluzszy bo wykonywalby duzo operacji porownania :d |
|
1 « 2 » 3 |