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

Rozdział 21. Losowanie bez powtórzeń.

Ostatnio zmodyfikowano 2017-04-11 22:34
Autor Wiadomość
Andy20
Temat założony przez niniejszego użytkownika
Rozdział 21. Losowanie bez powtórzeń.
» 2017-04-11 22:05:14
Witam,

Treść zadania: Napisz program, który wczyta 3 liczby podane przez użytkownika do tablicy, a następnie wylosuje 2 z nich bez powtórzeń. Wynik wypisz na ekran. Postaraj się napisać ten program w oparciu o funkcje.

Mój kod: Analizowałem ten kod kilkukrotnie, ale nadal nie rozwiązałem mojego problemu. Liczby są wypisywane za pomocą wylosowanego indeksu tablicy, ale zdarza się, że program wypisuje 2 razy tą samą wartość. Proszę o jakąś podpowiedź. :)

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

void wczytaj( int tab[] );
int losuj();
bool czy_byla_wylosowana( int liczba, int tab[] );

int main()
{
    srand( time( NULL ) );
    int moja_tablica[ 3 ], wylosowane[ 2 ];
   
    std::cout << "Wczytaj 3 liczby calkowite\n";
    wczytaj( moja_tablica );
   
    int i = 0;
    do
    {
        int liczba = losuj();
       
        if( czy_byla_wylosowana( liczba, wylosowane ) == false )
        {
            wylosowane[ i ] = moja_tablica[ liczba ];
            i++;
        }
    } while( i < 2 );
   
    i = 0;
    std::cout << "Wylosowane liczby to: ";
    do
    {
        std::cout << wylosowane[ i ] << " ";
        i++;
    } while( i < 2 );
   
    system( "pause" );
    return 0;
}

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

int losuj()
{
    return rand() % 3;
}

bool czy_byla_wylosowana( int liczba, int tab[] )
{
    int i = 0;
    do
    {
        if( tab[ i ] == liczba )
             return true;
       
        i++;
    } while( i < 2 );
   
    return false;
}
P-160078
maly7
» 2017-04-11 22:27:40
if( czy_byla_wylosowana( moja_tablica[ liczba ], wylosowane ) == false )

Do funkcji przekazuj liczbę a nie indeks.
P-160079
Andy20
Temat założony przez niniejszego użytkownika
» 2017-04-11 22:34:38
Dzięki :)

P-160080
« 1 »
  Strona 1 z 1