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

[C++] Kurs : Losowanie bez powtórzeń

Ostatnio zmodyfikowano 2014-02-22 23:48
Autor Wiadomość
bodixdave
Temat założony przez niniejszego użytkownika
[C++] Kurs : Losowanie bez powtórzeń
» 2014-02-22 23:27:33
Witam!

 Jestem w trakcie kursu C++ na rozdziale 21 i mam problem z zadaniem domowym.
Jest o nim na tym forum parę postów, lecz one nie ilustrują sposobu w jaki chciałem rozwiązać ten problem,
a sądzę, że w programowaniu liczy się kreatywność.

 Do rzeczy. Zadanie domowe to "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." Ja rozumiem to zadanie tak, że użytkownik wpisuje 3 liczby do tablicy i dwie z nich są losowane bez powtórzeń, co jest moim zdaniem trochę dziwne, lecz poprawcie mnie jeśli źle to rozumiem.
 Mój problem polega na tym, że zamiast przewidywanych liczb, które zostały wpisane, wypisuje się w terminalu 54 i jakaś wielocyfrowa liczba.

(wiem, że kod jest bardzo pogmatwany, lecz pod koniec się zorientowałem, że chyba to nie wyjdzie i starałem się to ratować)
C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>

int podaj_liczbe( int iTablica[], int ile )
{
    using namespace std;
   
    int Liczba;
    int i = 0;
    int l = 1;
    do
    {
        cout << "Podaj liczbe " << l << " ";
        cin >> Liczba;
        iTablica[ i ] = Liczba;
        i++;
        l++;
    } while( i < ile );
   
}

int losuj_liczbe( int ile )
{
    return( rand() % ile ) + 0;
}

int main()
{
    using namespace std;
    srand( time( NULL ) );
   
    int tab[ 3 ];
    podaj_liczbe( tab, 3 );
   
    int iLiczba;
    int oLiczba;
   
    tab[ losuj_liczbe( 3 ) ] = iLiczba;
   
    do
    {
        if(( tab[ losuj_liczbe( 3 ) ] = oLiczba ) != iLiczba )
       
             cout << "Liczby to " << iLiczba << ", " << oLiczba;
       
        return 0;
       
    } while( oLiczba == iLiczba );
   
    return 0;
}
P-105131
OSA_PL
» 2014-02-22 23:39:30
tab[ losuj_liczbe( 3 ) ] = iLiczba;
 Przypisujesz do tablicy wartość niezainicjalizowanej zmiennej.
P-105133
bodixdave
Temat założony przez niniejszego użytkownika
» 2014-02-22 23:48:42
Już rozumiem! Zamieniłem to i nie do końca działa, lecz to już inny problem i sobie poradzę ;)

Wielkie dzięki!

[edit] już ogarnąłem zupełnie :) jeszcze raz dziękuje!
P-105134
« 1 »
  Strona 1 z 1