[Lekcja 21] Zadanie 1
Ostatnio zmodyfikowano 2012-04-28 18:00
quentine Temat założony przez niniejszego użytkownika |
[Lekcja 21] Zadanie 1 » 2012-04-28 17:35:26 Witam, Realizuję kurs c++ krok po kroku, w dość powolnym niestety tempie, no i w końcu dotarłem do zadania, na którym utknąłem, dokładniej losowanie bez powtórzeń. Trzy wieczory nad tym spędziłem i po prostu nie mam pojęcia dlaczego zamiast drugiej wylosowanej liczby mam zawsze -1. Gdybyście mogli mnie jakoś nakierować to byłbym bardzo wdzięczny. #include <cstdlib> #include <iostream> #include <ctime> using namespace std; bool czyByla( int ind, int t1[], int t2[], int k ) { if( k <= 0 ) return false; int i = 0; do { if( t2[ i ] == t1[ ind ] ) return true; i++; } while( i < 2 ); return false; } int losuj( int min, int max ) { int x =( rand() % max ) + min; return x; } int main( int argc, char * argv[] ) { srand( time( NULL ) ); int t1[ 3 ]; int t2[ 2 ]; cout << "Podaj trzy kolejne liczby. Program zapisze je w tablicy" << endl; int i = 0; do { cin >> t1[ i ]; i++; } while( i < 3 ); int ind = losuj( 0, 2 ); cout << endl << t1[ ind ] << endl; int k = 0; do { if( czyByla( ind, t1, t2, k ) == false ) t2[ k ] = t1[ ind ]; k++; } while( k < 2 ); cout << t2[ 0 ] << ", " << t2[ 1 ] << endl; system( "pause" ); return 0; } |
|
SeaMonster131 |
» 2012-04-28 17:43:12 Bo Ty jej/ich nigdzie nie losujesz. |
|
quentine Temat założony przez niniejszego użytkownika |
» 2012-04-28 17:43:48 losuję, ale indeks i potem wyciągam liczbę z tablicy znajdującą się pod tym indeksem. |
|
xevuel |
» 2012-04-28 17:52:23 Funkcję losuj wywołujesz tylko raz, więc jak 2 liczba może przyjąć inną wartość? |
|
quentine Temat założony przez niniejszego użytkownika |
» 2012-04-28 18:00:16 Faktycznie, to był błąd. Zapomniałem też o klamrach w: { t2[ k ] = t1[ ind ]; k++; } Dziękuję bardzo za podpowiedź :). Trochę wstyd, że tyle czasu sam tego nie wyłapałem. Poprawiony program, gdyby to kogoś interesowało - poniżej :) #include <cstdlib> #include <iostream> #include <ctime> using namespace std; bool czyByla( int ind, int t1[], int t2[], int k ) { if( k <= 0 ) return false; int i = 0; do { if( t2[ i ] == t1[ ind ] ) return true; i++; } while( i < 2 ); return false; } int losuj( int min, int max ) { int x =( rand() % max ) + min; return x; } int main( int argc, char * argv[] ) { srand( time( NULL ) ); int t1[ 3 ]; int t2[ 2 ]; cout << "Podaj trzy kolejne liczby. Program zapisze je w tablicy" << endl; int i = 0; do { cin >> t1[ i ]; i++; } while( i < 3 ); int k = 0; do { int ind = losuj( 0, 2 ); if( czyByla( ind, t1, t2, k ) == false ) { t2[ k ] = t1[ ind ]; k++; } } while( k < 2 ); cout << t2[ 0 ] << ", " << t2[ 1 ] << endl; system( "pause" ); return 0; }
|
|
« 1 » |