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

Losowanie bez powtórzeń - zadanie domowe.

Ostatnio zmodyfikowano 2017-07-06 21:36
Autor Wiadomość
bartinio07
Temat założony przez niniejszego użytkownika
Losowanie bez powtórzeń - zadanie domowe.
» 2017-07-06 16:57:02
Witam, mam problem z zadaniem domowym, które brzmi:
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.

Na początku wydawało mi się, że program działa poprawnie - jeśli podam 3 różne liczby liczby, to losuje 2 z nich bez powtórzeń, tak jak powinien. Problem pojawia się, jeśli wśród tych trzech liczb któraś się powtarza, np. jeśli wpiszę 1, 1, 2, to czasami wylosuje dwie 1. Podpowie ktoś, gdzie jest błąd?
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

bool czyWylosowana( int liczba, int tab[], int ile )
{
    if( ile <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( tab[ i ] == liczba )
             return true;
       
        i++;
       
    } while( i < ile );
   
    return false;
}
void wypelnijTablice( int tab[], int ile )
{
    cout << "Podaj " << ile << " liczb: " << endl;
    int licznik = 0;
    do
    {
        cin >> tab[ licznik ];
        licznik++;
    } while( licznik < ile );
   
}

int wylosuj( int start, int stop )
{
    return( rand() %( stop - start + 1 ) ) + start;
}


int main()
{
    srand( time( NULL ) );
    int tablica[ 3 ];
    wypelnijTablice( tablica, 3 );
    int spr[ 2 ];
    int i = 0;
    do
    {
        int indeks = wylosuj( 0, 2 );
        spr[ i ] = indeks;
       
        if( czyWylosowana( indeks, spr, i ) == false )
        {
            cout << tablica[ indeks ] << endl;
            i++;
        }
       
    } while( i < 2 );
   
   
    return 0;
   
}
 
P-163066
karambaHZP
» 2017-07-06 20:29:55
Sam pisałeś kod programu więc wiesz, że te dwie jedynki to te same wartości lecz nie te same liczby ;)
P-163068
Chowan
» 2017-07-06 21:10:50
Wydaje mi się, że chodzi o to że do tablicy dwuelementowej nie losujesz liczb ale indeksy tablicy trzyelementowej. Czyli 2 takie same liczby pod innym indeksem wejdą poprawnie do tablicy.
P-163069
bartinio07
Temat założony przez niniejszego użytkownika
» 2017-07-06 21:36:22
Racja, chodziło o to, że losowałem indeksy tablicy. Nie pomyślałem, że indeksy mogą być różne, ale mieć te same wartości. Dzięki ;)
P-163071
« 1 »
  Strona 1 z 1