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

Losowanie bez powtórzeń.

Ostatnio zmodyfikowano 2014-07-04 08:51
Autor Wiadomość
gvphjw395jp
Temat założony przez niniejszego użytkownika
Losowanie bez powtórzeń.
» 2014-07-03 09:49:29
Witam
Mam problem odnośnie losowania bez powtórzeń.
napisałem 2 programy:

1(to zadania do tematu losowanie bez powtórzeń z losowaniem 3 podanych liczb)
C/C++
// aplikacja_Los_bez_p.cpp: Określa punkt wejścia dla aplikacji konsoli.
//

#include "stdafx.h"
#include<iostream>


using namespace std;

int wczytaj()
{
    int liczba;
    do
    {
        cin.clear();
        cin.sync();
        cin >> liczba;
        if( cin.good() == false )
             cout << "funkcja nie moze przyjac warotsci w postaci znakow" << endl;
       
    } while( cin.good() == false );
   
    return liczba;
}

bool sprawdzenieLosowania( int doLosowania2[], int wylosowane2[], int iile )
{
    if( iile <= 0 )
         return false;
   
    for( int a = 0; a < 2; a++ )
    {
        if( doLosowania2[ iile ] == wylosowane2[ a ] )
             return true;
       
    }
    return false;
}



int _tmain( int argc, _TCHAR * argv[] )
{
    for(;; )
    {
        cout << "Podaj 3 liczby, a program wylosuje 2 z nich bez powtorzen" << endl;
       
        int l_do_losowania[ 3 ];
        int wylosowane[ 2 ];
        int ile = 0;
       
        for( int i = 0; i < 3; i++ )
        {
            cout << "Liczba nr: " << i + 1 << " = ";
            l_do_losowania[ i ] = wczytaj();
            cout << endl;
        }
       
        do
        {
            if( sprawdzenieLosowania( l_do_losowania, wylosowane, ile ) == false )
            {
                wylosowane[ ile ] == l_do_losowania[ ile ];
                ile++;
            }
        } while( ile < 2 );
       
       
       
        cout << "twoja wylosowane liczby z pośród podanych to: ";
        for( int i = 0; i < 2; i++ )
        {
            cout << wylosowane[ i ] << ", ";
        }
        getchar();
        getchar();
        getchar();
        system( "CLS" );
    }
   
   
   
   
   
   
   
   
   
   
    return 0;
}
2.(to jest losowanie bez powtórzeń które starałem się pisać sam)
C/C++
// losowanie_bez_RTM.cpp: Określa punkt wejścia dla aplikacji konsoli.
//

#include "stdafx.h"
#include<iostream>
#include<ctime>
#include<windows.h>
#include<cstdlib>

using namespace std;





bool sprawdzenieLosowania( long long gotowe[], long long aktualna, long long ile )
{
    if( ile == 0 )
         return false;
   
    int licznik = 0;
    do
    {
        if( aktualna == gotowe[ licznik ] )
             return true;
       
        licznik++;
    } while( licznik < ile );
   
    return false;
}
int los()
{
    return( rand() % 49 ) + 1;
}


int _tmain( int argc, _TCHAR * argv[] )
{
    srand( time( 0 ) );
    cout << "za 3 sekundy nastapi zwolnienie blokady" << endl;
   
    for( int o = 3; o > 0; o-- )
    {
        Sleep( 10 );
        cout << o << endl;
    }
   
    //losowanie bez powtorki START!!!!!!!!!!!............./////////////////////////////////////
    long long trafione[ 6 ];
    long long ileWylosowanych = 0;
   
    do
    {
        long long losowana = los();
        if( sprawdzenieLosowania( trafione, losowana, ileWylosowanych ) == false )
        {
            trafione[ ileWylosowanych ] == losowana;
            ileWylosowanych++;
        }
    } while( ileWylosowanych < 6 );
   
    cout << "gdybys gral w TOTOLOTKA, to musial bys trafic ponizesze liczby:" << endl;
    for( int w = 0; w < 6; w++ )
    {
        cout << trafione[ w ] << endl;
    }
    cout << "i co? udlo ci sie trafic w LOTKA? :D";
   
    getchar();
   
   
   
   
   
   
   
   
   
    return 0;
}
Programy pisałem w Visualu, podczas kompilacji wszystko jest pięknie, brak jakichkolwiek błędów, wszystko gra, ale podczas uruchomienia programu, w obu przypadkach, zamiast wylosowanej liczby, program w konsoli wyświetla:-858993460
Proszę o pomoc...
P-113157
Mateus.
» 2014-07-03 10:12:33
Przeczytaj regulamin przed założeniem tematu, bo to niewygodnie się czyta. Jest tam opisane jak umieścić kod i wynik działania programu oraz log kompilacji.
P-113158
pekfos
» 2014-07-03 11:23:59
W pierwszym programie jest w ogóle jakieś losowanie?

C/C++
wylosowane[ ile ] == l_do_losowania[ ile ];
C/C++
trafione[ ileWylosowanych ] == losowana;
To niczego nie robi.
P-113162
gvphjw395jp
Temat założony przez niniejszego użytkownika
» 2014-07-04 08:51:31
W pierwszym program ma wylosować 2 liczby z 3 bez powtórzeń, ale podane przez użytkownika, tak było w zadaniu. Ale jestem matoł, jak mogłem dać operator porównywania zamiast równości... Przepraszam ze ten temat....
P-113254
« 1 »
  Strona 1 z 1