Losowanie bez powtórzeń.
Ostatnio zmodyfikowano 2014-07-04 08:51
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)
#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)
#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; } 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... |
|
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. |
|
pekfos |
» 2014-07-03 11:23:59 W pierwszym programie jest w ogóle jakieś losowanie? wylosowane[ ile ] == l_do_losowania[ ile ];
|
trafione[ ileWylosowanych ] == losowana;
|
To niczego nie robi. |
|
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.... |
|
« 1 » |