ptaq Temat założony przez niniejszego użytkownika |
[Lekcja 21] Prośba o sprawdzenie kodu » 2011-11-08 18:05:37 Witam ponownie , program nie jest skończony , a mianowicie nie sprawdza czy wylosowana liczba nie padła podczas pierwszego losowania. Nie jestem tez pewien czy to co jest do tej pory działa tak jak powinno. Prosze wiec o porade i ewentualne wskazówki :) #include <iostream> #include <ctime> #include <cstdlib>
bool czyJestWtablicy( int iliczba, int t[], int ile ) { int i = 0; do { if( iliczba == t[ i ] ) return true; i++; } while( i < ile ); return false; }
int losowanie() { return rand(); }
void wypelijTablice( int t[], int iRozmiar ) { std::cout << "podaj " << iRozmiar << " liczby: " << std::endl; int i = 0; do { std::cin >> t[ i ]; i++; } while( i < iRozmiar ); }
int main()
{ int liczby[ 3 ]; int wylosowanych = 0; int wybor; do { srand( time( NULL ) ); wypelijTablice( liczby, 3 ); int i = 0; do { std::cout << liczby[ i ] << ","; i++; } while( i < 3 ); do { int liczba = losowanie(); if( czyJestWtablicy( liczba, liczby, 3 ) == true ) { liczby[ wylosowanych ] = liczba; wylosowanych++; } } while( wylosowanych < 2 ); std::cout << std::endl; std::cout << "wylosowane liczby to: " << std::endl; wylosowanych = 0; do { std::cout << std::endl; std::cout << liczby[ wylosowanych ]; wylosowanych++; } while( wylosowanych < 2 ); std::cout << std::endl; } while( wybor == 0 ); std::cout << std::endl; system( "pause" ); return 0; }
|
|
Drraven |
» 2011-11-08 18:50:48 rand to skrót od random - z ang. Losowanie (można też tak przetłumaczyć). Więc nie wiem po co ci wraper Losowanie na tą jedną funkcje? Zrób sobie liste wylosowanych liczb i podczas losowania sprawdzaj czy jest juz ta liczba na liscie. list < int > liczby;
int loss = rand(); if( liczby.find( loss ) == - 1 ) { liczby.push_back( loss ); }
Istnieją też inne sposoby szukania, find nie jest jedynym. |
|
pekfos |
» 2011-11-08 19:05:41 int losowanie() { return rand(); } O.o Po co tracić na wydajności i pisać więcej kodu? |
|
DejaVu |
» 2011-11-08 20:32:20 Jakby wydajność miała jakiekolwiek znaczenie dla początkującego i w takim programie... |
|
pekfos |
» 2011-11-08 20:42:21 co szkodzi się przyzwyczajać? |
|
ptaq Temat założony przez niniejszego użytkownika |
» 2011-11-08 21:36:26 hmm będąc na etapie 21 lekcji sposób drravena jest dla mnie troch nie zrozumiały. Dlaczego program ciągle losuje pierwsza i drugą liczbę ??? |
|
ptaq Temat założony przez niniejszego użytkownika |
» 2011-11-09 18:53:08 zrobiłem to tak , jak by ktoś mógł rzucić okiem , niby losuje ale jak podam np 5 liczb i ma losować 4 to zatrzymuje sie na wypełnieniu tablicy , ale jak jest 6 i losuje 4 to jest ok. ??? #include <iostream> #include <ctime> #include <cstdlib>
bool czyJestWtablicy( int iliczba, int t[], int ile ) { int i = 0; do { if( iliczba == t[ i ] ) return true; i++; } while( i < ile ); return false; }
bool czyBylaWylosowana( int iliczba, int tab[], int ile )
{ int i = 0; do { if( tab[ i ] == iliczba ) return true; i++; } while( i < ile ); return false; }
void wypelijTablice( int t[], int iRozmiar ) { std::cout << "podaj " << iRozmiar << " liczby: " << std::endl; int i = 0; do { std::cin >> t[ i ]; i++; } while( i < iRozmiar ); }
int main()
{ int liczby[ 6 ]; int wylosowanych = 0; int wybor; do { srand( time( NULL ) ); wypelijTablice( liczby, 6 ); int i = 0; do { std::cout << liczby[ i ] << ","; i++; } while( i < 6 ); do { int liczba = rand(); if( czyJestWtablicy( liczba, liczby, 6 ) == true ) if( czyBylaWylosowana( liczba, liczby, wylosowanych ) == false ) { liczby[ wylosowanych ] = liczba; wylosowanych++; } } while( wylosowanych < 4 ); std::cout << std::endl; std::cout << "wylosowane liczby to: " << std::endl; wylosowanych = 0; do { std::cout << std::endl; std::cout << liczby[ wylosowanych ]; wylosowanych++; } while( wylosowanych < 4 ); std::cout << std::endl; } while( wybor == 0 ); std::cout << std::endl; system( "pause" ); return 0; }
[/i] |
|
ptaq Temat założony przez niniejszego użytkownika |
» 2011-11-09 22:40:48 ok coś ciężko się doprosić pomocy ale w końcu działa ;p #include <iostream> #include <ctime> #include <cstdlib>
bool czyJestWtablicy( int iliczba, int t[], int ile )
{ int i = 0; do { if( iliczba == t[ i ] ) return true; i++; } while( i < ile ); return false; }
bool czyBylaWylosowana( int iliczba, int tab[], int ile )
{ int i = 0; do { if( tab[ i ] == iliczba ) return true; i++; } while( i < ile ); return false; }
void wypelijTablice( int t[], int iRozmiar ) { std::cout << "podaj " << iRozmiar << " liczby: " << std::endl; int i = 0; do { std::cin >> t[ i ]; i++; } while( i < iRozmiar ); }
int main()
{ int wybor; int liczby[ 11 ]; int wylosowane[ 5 ]; int wylosowanych = 0; srand( time( NULL ) ); wypelijTablice( liczby, 11 ); int i = 0; do { std::cout << liczby[ i ] << ","; i++; } while( i < 11 ); do { int liczba = rand(); if( czyJestWtablicy( liczba, liczby, 11 ) == true ) if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false ) { wylosowane[ wylosowanych ] = liczba; wylosowanych++; } } while( wylosowanych < 5 ); std::cout << std::endl; std::cout << "wylosowane liczby to: " << std::endl; wylosowanych = 0; do { std::cout << std::endl; std::cout << wylosowane[ wylosowanych ]; wylosowanych++; } while( wylosowanych < 5 ); std::cout << std::endl; std::cout << std::endl; system( "pause" ); return 0; }
|
|
« 1 » 2 |