Moorfox |
» 2014-05-31 21:27:08 A to, że int i = 0 jest w innym miejscu, to nie ma nic wspólnego z formatowaniem ?? A otrzymało się to dzięki pętli |
|
pekfos |
» 2014-05-31 21:46:56 Nie ma.
8k postów, otwieram szampana.. |
|
marmal Temat założony przez niniejszego użytkownika |
» 2014-06-01 17:34:16 W funkcji bool rzeczywiście, zgubiłem return. Poprawione: bool czyWylosowana( int liczba, int wyb[], int wylos[], int ile ) { if( ile == 0 ) return false; int i = 0; do { if( wylos[ ile ] == wyb[ liczba ] ) return true; i++; } while( i < ile ); return false; }
int i = 0; do { if( wylos[ ile ] == wyb[ liczba ] ) return true; i++; } while( i < ile );
Czemu nie możesz zrozumieć? Mam tablicę wylosowanych(2 - elementowa), oraz wybranych (3 - elementowa). Program ma losować liczbę z przedziału 0 - 2(liczba), aby sprawdzić czy liczba z tablicy o indeksie wylosowanej liczby: wybrane[liczba] "siedzi" już w tablicy wylosowanych, jeżeli nie to ja dopisać. Zmienna int i jest mi potrzebna, aby najpierw sprawdzić wylos[0], później wylos[1]. Nie wiem, czy moje rozumowanie jest dobre, ale to jedyny sposób napisania tego programu, na jaki wpadłem. wybrane[ liczba ] = wylosowane[ ile ];
A tutaj nie wiem, jaki błąd mam. Program nie działa prawidłowo, bo losuje liczby duże (ok. 200 000+), a nie z tych podanych. |
|
pekfos |
» 2014-06-01 17:35:29 if( wylos[ ile ] == wyb[ liczba ] )
|
Nie użyłeś tu i. |
|
marmal Temat założony przez niniejszego użytkownika |
» 2014-06-01 17:46:57 Rzeczywiście. Próbowałem tak: int i = 0; do { if( wylos[ i ] == wyb[ liczba ] ) return true; i++; } while( i < ile );
ale też nie działa. Kombinuję już na różne sposoby, z tym "i". Próbowałem również to "i" wyrzucić całkowicie, ale ciągle nic. Co ciekawe program mi za każdym razem losuje te same liczby: 2293508 oraz 2293560 |
|
pekfos |
» 2014-06-01 17:49:14 Podaj cały aktualny kod. |
|
marmal Temat założony przez niniejszego użytkownika |
» 2014-06-01 17:54:52 #include <iostream> #include <cstdio> #include <cstdlib> #include <time.h> #include <windows.h>
int losuj() { return rand() % 3; }
bool czyWylosowana( int liczba, int wyb[], int wylos[], int ile ) { if( ile == 0 ) return false; int i = 0; do { if( wylos[ i ] == wyb[ liczba ] ) return true; i++; } while( i < ile ); return false; }
using namespace std;
int main() { srand( time( NULL ) ); int wylosowane[ 2 ]; int wybrane[ 3 ]; for( int i = 0; i < 3; i++ ) { cin >> wybrane[ i ]; } int liczba = 0; int ile = 0; cout << "Wybrane:\n"; for( int i = 0; i < 3; i++ ) { cout << wybrane[ i ] << endl; } do { losuj(); liczba = losuj(); if( czyWylosowana( liczba, wybrane, wylosowane, ile ) == false ) { wybrane[ liczba ] = wylosowane[ ile ]; ile++; } } while( ile < 2 ); cout << "Wylosowane: \n"; for( int i = 0; i < 2; i++ ) { cout << wylosowane[ i ] << endl; } }
|
|
pekfos |
» 2014-06-01 17:58:49 Niczego nie przypisujesz do wylosowane. |
|
1 « 2 » 3 |