Lekcja 21 zadanie domowe 1
Ostatnio zmodyfikowano 2013-02-16 12:31
matti0010 Temat założony przez niniejszego użytkownika |
Lekcja 21 zadanie domowe 1 » 2012-12-26 10:31:50 Witam, mój problem jest nastepujący: zawsze losuje pierwsze dwie wprowadzone liczby, dlaczego? Gdzie mam błąd? Pomoże ktoś? ;) #include <iostream> #include <cstdlib> #include <ctime>
bool czyBylaWylosowana( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i ] == iLiczba ) return true; i++; } while( i < 3 ); return false; }
int wylosuj() { return( rand() % 3 ) + 1; }
int main() { int wylosowane[ 3 ]; int wylosowanych = 0; do { std::cout << "Wprowadz liczbe: " << std::endl; std::cin >> wylosowane[ wylosowanych ]; wylosowanych++; } while( wylosowanych < 3 ); do { int liczba = wylosuj(); if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false ) { wylosowane[ wylosowanych ] = liczba; wylosowanych++; } } while( wylosowanych < 2 ); wylosowanych = 0; std::cout << std::endl; std::cout << "Wylosowane liczby:" << std::endl; do { std::cout << wylosowane[ wylosowanych ] << std::endl; wylosowanych++; } while( wylosowanych < 2 ); return 0; }
Dziekuję z góry za pomoc ;) |
|
jsc |
» 2012-12-26 12:37:49 Nigdzie nie używasz srand. |
|
matti0010 Temat założony przez niniejszego użytkownika |
» 2012-12-26 13:22:14 faktycznie xD to bede musiał pomyslec jak to tam umieścić bo ostatnia próba umieszczenia wyrzuciła mi błąd w bibliotece xD |
|
dominikowy |
» 2012-12-27 14:29:19 Tak się składa, że też ostatnio męczyłem się nad tymi zadaniami, ale w końcu mi się udało! ;] Ale mam trochę wątpliwości, czy to zadanie w taki sposób mogłem rozwiązać.. "2. Zmodyfikuj program z pierwszego zadania tak, aby użytkownik musiał podać 10 liczb, a 8 z nich będzie losowanych bez powtórzeń. Sprawdź czy wyniki są poprawne." Wątpliwość: "..aby użytkownik musiał podać 10 liczb", to mają być kolejne np. od 1 do 10? Czy np. 800, potem 7545 itd? A nie wiem jak w funkcji rand zrobić przedział z podanych liczb, np. "niech komputer wylosuje 2 liczby z [65,23,45,23,45]". Więc, wpadłem na pomysł, aby: Najpierw komputer losuje liczbę. Jeżeli wylosował 1 (czyli zmienna liczba==1) to 1=pierwsza podana liczba uzytkownika, jezeli 2 to 2=druga liczba uzytkownika, wygląda to mniej więcej tak: if( liczba == 1 ) a[ wylosowanych ] = uzytkownik[ 0 ];
if( liczba == 2 ) a[ wylosowanych ] = uzytkownik[ 1 ];
if( liczba == 3 ) a[ wylosowanych ] = uzytkownik[ 2 ];
if( liczba == 4 ) a[ wylosowanych ] = uzytkownik[ 3 ];
if( liczba == 5 ) a[ wylosowanych ] = uzytkownik[ 4 ];
Po stworzeniu pętli w pętli: int przyp = 0; int przyp1 = 1; do { if( liczba == przyp1 ) a[ wylosowanych ] = uzytkownik[ przyp ]; przyp++; przyp1++; } while( przyp < 10 );
Trochę pokracznie to wszystko wygląda, ale wszystko sprawdzałem po parę razy czy komputer losuje liczby użytkownika i działa :] Czy tym "przypisywaniem" liczb użytkownika do wylosowanych liczb, mogłem rozwiązać do zadanie? I mogę przejść dalej? :P |
|
adusiek |
» 2013-02-16 12:31:32 << removed by xevuel - załóż własny temat >> |
|
« 1 » |