Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Lekcja 21 zadanie domowe 1

Ostatnio zmodyfikowano 2013-02-16 12:31
Autor Wiadomość
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ś? ;)

C/C++
#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++;
        } //if
    } 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 ;)
P-71978
jsc
» 2012-12-26 12:37:49
Nigdzie nie używasz srand.
P-71984
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
P-71990
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:
C/C++
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 ];
//itd..
Po stworzeniu pętli w pętli:
C/C++
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

P-72073
adusiek
» 2013-02-16 12:31:32
<< removed by xevuel - załóż własny temat >>
P-76399
« 1 »
  Strona 1 z 1