[Lekcja 21] Zadanie nr.1
Ostatnio zmodyfikowano 2012-03-18 14:52
Unlimited Temat założony przez niniejszego użytkownika |
[Lekcja 21] Zadanie nr.1 » 2012-03-17 20:50:39 Witam. Sam program działa lecz nie zawsze pokażą się dwie różne cyfry. Czasem te same a jednak sprawdzałem kod kilka razy i wydaje się być dobry. #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
int podawanie_liczb() { int a = 0; cout << "Podaj liczbe: "; cin.clear(); cin.sync(); cin >> a; return a; }
int wylosuj( int podawane[ 3 ] ) { int a =( rand() % 3 ) + 0; return podawane[ a ]; }
bool czy_byla_wylosowana( int liczba, int losowane[ 2 ], int wylosowane ) { if( wylosowane <= 0 ) return false; int i = 0; do { if( losowane[ i ] == liczba ) return true; i++; } while( i < wylosowane ); return false; }
int main() { srand( time( NULL ) ); int podawane[ 3 ]; int losowane[ 2 ]; int wylosowane = 0; int a = 0; do { podawane[ a ] = podawanie_liczb(); a++; } while( a < 3 ); do { int liczba = wylosuj( podawane ); if( czy_byla_wylosowana( liczba, losowane, wylosowane ) == false ); { losowane[ wylosowane ] = liczba; wylosowane++; } } while( wylosowane < 2 ); a = 0; do { cout << "Wylosowana liczba sposrod wyslanych: " << losowane[ a ] << endl; a++; } while( a < 2 ); return 0; }
Dobrze by było gdyby ktoś pokazał mi błąd... |
|
jsc |
» 2012-03-17 21:06:04 Dlaczego deklarujesz funkcje z parametrami w postaci: int losowane[ 2 ] i int podawane[ 3 ]? |
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-03-17 21:07:43 Przekazywanie tablicy jednowymiarowej do funkcji W C++ mamy do dyspozycji kilka form zapisu przekazywania tablic do funkcji. W niniejszym rozdziale poznamy trzy sposoby zapisu osiągnięcia naszego celu. Zapisy, które zostaną przedstawione są względem siebie równoważne, a więc można ich używać zamiennie. Zapisy te wyglądają następująco: void sposob_1( int tablica[ 123 ] ); void sposob_2( int tablica[] ); void sposob_3( int * tablica ); |
|
jsc |
» 2012-03-17 21:18:49 Na początek znaleziony błąd to: int wylosuj( int podawane[ 3 ] ) { int a =( rand() % 3 ) + 0; return podawane[ a ]; }
funkcja ta zwraca wartość przypadkowej komórki tablicy, czyli nie wiesz nawet co sprawdzasz. |
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-03-17 21:20:56 W zadaniu jest napisane aby wylosowana została liczba z wcześniej podanych liczb przez człowieka |
|
akwes |
» 2012-03-17 21:21:39 void sposob_1( int tablica[ 123 ] ); void sposob_2( int tablica[] );
Są to dokładnie takie same przykłady tak samo interpretowanie przez kompilator, ponieważ pierwszy rozmiar tablicy nie bierze udziału w obliczaniu położenia elementu w tablicy. Dlatego void sposob_1( int tablica[] );
ale już void sposob_2( int tablica[][ 3 ] );
|
|
Unlimited Temat założony przez niniejszego użytkownika |
» 2012-03-17 21:24:26 akwes, czyli mam dobrze to czy zmienić? Próbowałem też na samych klamrach [] ale nic nie dało. |
|
jsc |
» 2012-03-17 21:28:34 Najpewniejsza jest gwiazdka. |
|
« 1 » 2 3 4 5 6 |