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

[C++] Problem z programem losującym liczby

Ostatnio zmodyfikowano 2011-07-14 16:41
Autor Wiadomość
asia97
Temat założony przez niniejszego użytkownika
[C++] Problem z programem losującym liczby
» 2011-07-14 14:35:54
Witam serdecznie :) napisałam program który miał wczytać trzy liczby podane przez użytkownika do tablicy, a później z tych liczb miał wylosować dwie ( zad1, rozdział 21)
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

bool czyBylaWylosowana( int iLiczba, int tab[], int ile )
{
    if( ile <= 0 )
         return false;
   
    for( int i = 0; i < ile; i++ )
    if( tab[ i ] == iLiczba )
         return true;
   
    return false;
}

void wczytajLiczby( int tab[], int ile )
{
    int i = 0;
    do
    {
        std::cin >> tab[ i ];
        i++;
    } while( i < ile );
   
}

int wylosuj( int tab[] )
{
    int a = rand() % 2;
    int b = tab[ a ];
   
    return b;
}

void wypiszLiczby( int tab1[], int tab2[] )
{
    std::cout << "Wypisane licby: " << tab1[ 0 ] << ", " << tab1[ 1 ] << ", " << tab2[ 2 ] << std::endl;
    std::cout << "Wylosowane liczby: " << tab2[ 0 ] << ", " << tab2[ 1 ] << std::endl;
}

int main()
{
    srand( time( NULL ) );
    int wypisane[ 3 ];
    int wylosowane[ 2 ];
    wczytajLiczby( wypisane, 3 );
    int wylosowanych = 0;
    do
    {
        int liczba = wylosuj( wylosowane );
        if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false )
        {
            wylosowane[ wylosowanych ] = liczba;
            wylosowanych++;
        }
       
    } while( wylosowanych < 2 );
   
    wypiszLiczby( wypisane, wylosowane );
   
    return 0;
}
Program wypisuje pierwszą i trzecią liczbę, a trzecia jest zawsze taka sama jak pierwsza. Z losowaniem też jest coś nie tak, ponieważ program losuje duże liczby. Co jest źle ? :)
P-35954
DejaVu
» 2011-07-14 16:20:01
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

bool czyBylaWylosowana( int iLiczba, int tab[], int ile )
{
    if( ile <= 0 )
         return false;
   
    for( int i = 0; i < ile; i++ )
    if( tab[ i ] == iLiczba )
         return true;
   
    return false;
}

void wczytajLiczby( int tab[], int ile )
{
    int i = 0;
    do
    {
        std::cin >> tab[ i ];
        i++;
    } while( i < ile );
   
}

int wylosuj( int tab[] )
{
    int a = rand() % 3;
    int b = tab[ a ];
   
    return b;
}

void wypiszLiczby( int tab1[], int tab2[] )
{
    std::cout << "Wypisane licby: " << tab1[ 0 ] << ", " << tab1[ 1 ] << ", " << tab1[ 2 ] << std::endl;
    std::cout << "Wylosowane liczby: " << tab2[ 0 ] << ", " << tab2[ 1 ] << std::endl;
}

int main()
{
    srand( time( NULL ) );
    int wypisane[ 3 ];
    int wylosowane[ 2 ];
    wczytajLiczby( wypisane, 3 );
    int wylosowanych = 0;
    do
    {
        int liczba = wylosuj( wypisane );
        if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false )
        {
            wylosowane[ wylosowanych ] = liczba;
            wylosowanych++;
        }
       
    } while( wylosowanych < 2 );
   
    wypiszLiczby( wypisane, wylosowane );
   
    return 0;
}
P-35968
asia97
Temat założony przez niniejszego użytkownika
» 2011-07-14 16:41:25
Dziękuję panu bardzo za pomoc :)
P-35969
« 1 »
  Strona 1 z 1