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

[Lekcja 21] Prośba o sprawdzenie kodu

Ostatnio zmodyfikowano 2011-11-11 00:53
Autor Wiadomość
ptaq
Temat założony przez niniejszego użytkownika
[Lekcja 21] Prośba o sprawdzenie kodu
» 2011-11-08 18:05:37
Witam ponownie , program nie jest skończony , a mianowicie nie sprawdza czy wylosowana liczba nie padła podczas pierwszego losowania. Nie jestem tez pewien czy to co jest do tej pory działa tak jak powinno. Prosze wiec o porade i ewentualne wskazówki :)

C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>



bool czyJestWtablicy( int iliczba, int t[], int ile )
{
   
   
    int i = 0;
   
    do
    {
        if( iliczba == t[ i ] )
             return true;
       
        i++;
    }
    while( i < ile );
   
    return false;
}

int losowanie()
{
   
    return rand();
}

void wypelijTablice( int t[], int iRozmiar )
{
    std::cout << "podaj " << iRozmiar << " liczby: " << std::endl;
    int i = 0;
    do
    {
        std::cin >> t[ i ];
        i++;
    }
    while( i < iRozmiar );
   
}


int main()

{
   
    int liczby[ 3 ];
    int wylosowanych = 0;
    int wybor;
    do
    {
        srand( time( NULL ) );
        wypelijTablice( liczby, 3 );
        int i = 0;
        do
        {
            std::cout << liczby[ i ] << ",";
            i++;
        }
        while( i < 3 );
       
       
       
        do
        {
           
            int liczba = losowanie();
            if( czyJestWtablicy( liczba, liczby, 3 ) == true )
            {
                liczby[ wylosowanych ] = liczba;
                wylosowanych++;
            }
        }
        while( wylosowanych < 2 );
       
       
        std::cout << std::endl;
        std::cout << "wylosowane liczby to: " << std::endl;
       
        wylosowanych = 0;
        do
        {
            std::cout << std::endl;
            std::cout << liczby[ wylosowanych ];
            wylosowanych++;
        }
        while( wylosowanych < 2 );
       
        std::cout << std::endl;
    }
    while( wybor == 0 );
   
    std::cout << std::endl;
   
    system( "pause" );
    return 0;
}

P-43584
Drraven
» 2011-11-08 18:50:48
rand to skrót od random - z ang. Losowanie (można też tak przetłumaczyć). Więc nie wiem po co ci wraper Losowanie na tą jedną funkcje?

Zrób sobie liste wylosowanych liczb i podczas losowania sprawdzaj czy jest juz ta liczba na liscie.
C/C++
//Tworzenie listy:
list < int > liczby;

//szukanie to find, jeśli zwróci -1 znaczy, że nie ma;
int loss = rand();
if( liczby.find( loss ) == - 1 )
{
    //Dodawanie do listy:
    liczby.push_back( loss );
}
Istnieją też inne sposoby szukania, find nie jest jedynym.
P-43588
pekfos
» 2011-11-08 19:05:41
C/C++
int losowanie()
{
   
    return rand();
}
O.o
Po co tracić na wydajności i pisać więcej kodu?
P-43589
DejaVu
» 2011-11-08 20:32:20
Jakby wydajność miała jakiekolwiek znaczenie dla początkującego i w takim programie...
P-43602
pekfos
» 2011-11-08 20:42:21
co szkodzi się przyzwyczajać?
P-43603
ptaq
Temat założony przez niniejszego użytkownika
» 2011-11-08 21:36:26
hmm będąc na etapie 21 lekcji sposób drravena jest dla mnie troch nie zrozumiały. Dlaczego program ciągle losuje pierwsza i drugą liczbę ???
P-43605
ptaq
Temat założony przez niniejszego użytkownika
» 2011-11-09 18:53:08
zrobiłem to tak , jak by ktoś mógł rzucić okiem , niby losuje ale jak podam np 5 liczb i ma losować 4 to zatrzymuje sie na wypełnieniu tablicy , ale jak jest 6 i losuje 4 to jest ok. ???

C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>



bool czyJestWtablicy( int iliczba, int t[], int ile )
{
   
    int i = 0;
    do
    {
        if( iliczba == t[ i ] )
             return true;
       
        i++;
       
       
       
       
       
    }
    while( i < ile );
   
    return false;
}


bool czyBylaWylosowana( int iliczba, int tab[], int ile )

{
   
   
    int i = 0;
    do
    {
        if( tab[ i ] == iliczba )
             return true;
       
        i++;
    } while( i < ile );
   
    return false;
}




void wypelijTablice( int t[], int iRozmiar )
{
    std::cout << "podaj " << iRozmiar << " liczby: " << std::endl;
    int i = 0;
    do
    {
        std::cin >> t[ i ];
        i++;
    }
    while( i < iRozmiar );
   
}




int main()

{
   
    int liczby[ 6 ];
    int wylosowanych = 0;
    int wybor;
   
   
    do
    {
        srand( time( NULL ) );
        wypelijTablice( liczby, 6 );
        int i = 0;
        do
        {
            std::cout << liczby[ i ] << ",";
            i++;
        }
        while( i < 6 );
       
       
       
        do
        {
           
            int liczba = rand();
           
           
            if( czyJestWtablicy( liczba, liczby, 6 ) == true )
           
           
            if( czyBylaWylosowana( liczba, liczby, wylosowanych ) == false )
            {
                liczby[ wylosowanych ] = liczba;
                wylosowanych++;
               
               
            }
           
        }
        while( wylosowanych < 4 );
       
       
        std::cout << std::endl;
        std::cout << "wylosowane liczby to: " << std::endl;
       
        wylosowanych = 0;
        do
        {
            std::cout << std::endl;
            std::cout << liczby[ wylosowanych ];
            wylosowanych++;
        }
        while( wylosowanych < 4 );
       
        std::cout << std::endl;
    }
    while( wybor == 0 );
   
    std::cout << std::endl;
   
    system( "pause" );
    return 0;
}
[/i]
P-43633
ptaq
Temat założony przez niniejszego użytkownika
» 2011-11-09 22:40:48
ok coś ciężko się doprosić pomocy ale w końcu działa ;p

C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>



bool czyJestWtablicy( int iliczba, int t[], int ile )

{
   
    int i = 0;
   
   
    do
    {
        if( iliczba == t[ i ] )
             return true;
       
        i++;
       
       
       
    }
    while( i < ile );
   
    return false;
}


bool czyBylaWylosowana( int iliczba, int tab[], int ile )

{
   
   
    int i = 0;
   
    do
    {
       
       
        if( tab[ i ] == iliczba )
             return true;
       
        i++;
    } while( i < ile );
   
    return false;
   
   
}




void wypelijTablice( int t[], int iRozmiar )
{
    std::cout << "podaj " << iRozmiar << " liczby: " << std::endl;
    int i = 0;
    do
    {
        std::cin >> t[ i ];
        i++;
    }
    while( i < iRozmiar );
   
}

int main()

{
    int wybor;
    int liczby[ 11 ];
    int wylosowane[ 5 ];
    int wylosowanych = 0;
   
   
   
    srand( time( NULL ) );
    wypelijTablice( liczby, 11 );
   
   
    int i = 0;
    do
    {
        std::cout << liczby[ i ] << ",";
        i++;
    }
    while( i < 11 );
   
   
   
    do
    {
       
        int liczba = rand();
       
       
        if( czyJestWtablicy( liczba, liczby, 11 ) == true )
        if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false )
        {
            wylosowane[ wylosowanych ] = liczba;
            wylosowanych++;
        }
       
    }
    while( wylosowanych < 5 );
   
   
    std::cout << std::endl;
    std::cout << "wylosowane liczby to: " << std::endl;
   
    wylosowanych = 0;
    do
    {
        std::cout << std::endl;
        std::cout << wylosowane[ wylosowanych ];
        wylosowanych++;
    }
    while( wylosowanych < 5 );
   
    std::cout << std::endl;
   
   
    std::cout << std::endl;
   
    system( "pause" );
    return 0;
}
P-43654
« 1 » 2
  Strona 1 z 2 Następna strona