losowanie liczb
Ostatnio zmodyfikowano 2011-02-26 09:12
neke Temat założony przez niniejszego użytkownika |
losowanie liczb » 2011-02-25 14:42:02 Witam, Mam mały problem. Moją intencją było napisanie programu który zapisuje do tablicy 3 podane przez usera liczby a następnie losuje dwie z nich (bez powtórzeń) i wyświetla je na monitorze. W kodzie jest coś nie tak bowiem wyświetlane są również powtórki. Będę bardzo wdzięczny za wskazanie błędu- nie mogę się go dopatrzeć! #include <iostream> #include <cstdlib> #include <ctime>
using namespace std;
bool bezPowtorek( int aWylosowana, int aJ ) { int tab[ 2 ]; if( aJ < 1 ) { aWylosowana = tab[ aJ ]; return false; } int i = 0; do { if( tab[ i ] == aWylosowana ) return true; i++; } while( i < aJ ); tab[ aJ ] = aWylosowana; return false; }
int losowanie( int max, int min ) { return( rand() % max ) + min; }
int main() { int tablica[ 3 ]; cout << "Podaj pierwsza liczbe " << endl; cin >> tablica[ 0 ]; cout << "Podaj druga liczbe" << endl; cin >> tablica[ 1 ]; cout << "Podaj trzecia liczbe" << endl; cin >> tablica[ 2 ]; srand( time( 0 ) ); int j = 0; do { int wylosowana = losowanie( 3, 0 ); if( bezPowtorek( wylosowana, j ) == false ) { cout << tablica[ wylosowana ]; j++; } } while( j < 2 ); return 0; }
|
|
malan |
» 2011-02-25 15:53:28 Po wyjściu z funkcji bezPowtorek tablica ( int tab[ 2 ]; ) przestaje istnieć, czyli przy każdym kolejnym wywołaniu bezPowtorek jest ona tworzona na nowo z nowymi danymi ;). Czytałeś może " Losowanie bez powtórzeń"? ;) |
|
neke Temat założony przez niniejszego użytkownika |
» 2011-02-25 16:33:52 dzięki!!!
Tak czytałem. Mój problem wynikał jednak z nie najlepszego zrozumienia funkcji. Dobrze by było wspomnieć w kursie (w rozdziale funkcje- pierwsze starcie) o tym że wartości zmiennych w funkcjach nie są w nich zapamiętywane. Dziękuję za pomoc.
By the way przydał by się tu licznik punktów dla osób aktywnych na forum- tak jak na elektrodzie ;)
Zabieram się do pracy.
|
|
neke Temat założony przez niniejszego użytkownika |
» 2011-02-25 19:49:56 Tak przy okazji pomaga również zrobienie zmiennej "tab" zmienną statyczną. Czyli bool bezPowtorek( int aWylosowana, int aJ ) { static int tab[ 2 ];
To tak tylko w kwestii wyczerpania tematu :) |
|
DejaVu |
» 2011-02-25 20:28:50 To jest akurat głupota :) |
|
neke Temat założony przez niniejszego użytkownika |
» 2011-02-25 22:35:26 Prawie w każdym rozdziale kursu jest wspomniane ze jest to głupota moze dobrze by było napisać kilka słów dlaczego, gdyż jak mówi teoria człowiek ma większą skłonność do postępowania w określony sposób, gdy zna uzasadnienie swoich czynów. Jak na razie (po 21 rozdziałach) nie wydaje mi się to głupotą więc pozostaje wierzyć na słowo ;) |
|
DejaVu |
» 2011-02-25 22:48:25 Ja tworzę kurs finezyjnie ;p wybacz ;d |
|
neke Temat założony przez niniejszego użytkownika |
» 2011-02-25 23:45:31 A myślałem, że rozsądek jest myślą przewodnią tego portalu. Wybacz :pd;); - cokolwiek to znaczy Pzdr, D. |
|
« 1 » 2 |