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

losowanie liczb

Ostatnio zmodyfikowano 2011-02-26 09:12
Autor Wiadomość
neke
Temat założony przez niniejszego użytkownika
losowanie liczb
» 2011-02-25 14:42:02
Witam,

Mam mały problem. Moją intencją było napisanie programu który zapisuje do tablicy 3 podane przez usera liczby a następnie losuje dwie z nich (bez powtórzeń) i wyświetla je na monitorze.

W kodzie jest coś nie tak bowiem wyświetlane są również powtórki. Będę bardzo wdzięczny za wskazanie błędu- nie mogę się go dopatrzeć!

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

using namespace std;

bool bezPowtorek( int aWylosowana, int aJ )
{
    int tab[ 2 ];
   
    if( aJ < 1 )
    {
        aWylosowana = tab[ aJ ];
        return false;
    }
   
    int i = 0;
    do
    {
        if( tab[ i ] == aWylosowana )
             return true;
       
        i++;
    } while( i < aJ );
   
    tab[ aJ ] = aWylosowana;
    return false;
}

int losowanie( int max, int min )
{
    return( rand() % max ) + min;
}

int main()
{
   
    int tablica[ 3 ];
   
    cout << "Podaj pierwsza liczbe " << endl;
    cin >> tablica[ 0 ];
    cout << "Podaj druga liczbe" << endl;
    cin >> tablica[ 1 ];
    cout << "Podaj trzecia liczbe" << endl;
    cin >> tablica[ 2 ];
   
    srand( time( 0 ) );
    int j = 0;
   
    do
    {
        int wylosowana = losowanie( 3, 0 );
        if( bezPowtorek( wylosowana, j ) == false )
        {
            cout << tablica[ wylosowana ];
            j++;
        }
    } while( j < 2 );
   
    return 0;
}
P-28602
malan
» 2011-02-25 15:53:28
Po wyjściu z funkcji
bezPowtorek
 tablica (
int tab[ 2 ];
) przestaje istnieć, czyli przy każdym kolejnym wywołaniu
bezPowtorek
 jest ona tworzona na nowo z nowymi danymi ;). Czytałeś może "» Kurs C++ » Poziom 2Losowanie bez powtórzeń lekcja"? ;)
P-28605
neke
Temat założony przez niniejszego użytkownika
» 2011-02-25 16:33:52
dzięki!!!

Tak czytałem. Mój problem wynikał jednak z nie najlepszego zrozumienia funkcji. Dobrze by było wspomnieć w kursie (w rozdziale funkcje- pierwsze starcie) o tym że wartości zmiennych w funkcjach nie są w nich zapamiętywane. Dziękuję za pomoc.

By the way przydał by się tu licznik punktów dla osób aktywnych na forum- tak jak na elektrodzie ;)

Zabieram się do pracy.

P-28608
neke
Temat założony przez niniejszego użytkownika
» 2011-02-25 19:49:56
Tak przy okazji pomaga również zrobienie zmiennej "tab" zmienną statyczną. Czyli
C/C++
bool bezPowtorek( int aWylosowana, int aJ )
{
    static int tab[ 2 ];

To tak tylko w kwestii wyczerpania tematu :)
P-28613
DejaVu
» 2011-02-25 20:28:50
To jest akurat głupota :)
P-28615
neke
Temat założony przez niniejszego użytkownika
» 2011-02-25 22:35:26
Prawie w każdym rozdziale kursu jest wspomniane ze jest to głupota moze dobrze by było napisać kilka słów dlaczego, gdyż jak mówi teoria człowiek ma większą skłonność do postępowania w określony sposób, gdy zna uzasadnienie swoich czynów. Jak na razie (po 21 rozdziałach) nie wydaje mi się to głupotą więc pozostaje wierzyć na słowo ;)
P-28619
DejaVu
» 2011-02-25 22:48:25
Ja tworzę kurs finezyjnie ;p wybacz ;d
P-28620
neke
Temat założony przez niniejszego użytkownika
» 2011-02-25 23:45:31
A myślałem, że rozsądek jest myślą przewodnią tego portalu. Wybacz :pd;); - cokolwiek to znaczy
Pzdr,
D.
P-28621
« 1 » 2
  Strona 1 z 2 Następna strona