Rozdzial 21 zad. 1
Ostatnio zmodyfikowano 2016-07-28 14:31
RockerFeller Temat założony przez niniejszego użytkownika |
Rozdzial 21 zad. 1 » 2016-07-28 12:05:39 Witam znowu mam klopot z zadaniem jedynie z tym aby wylosowac dwie liczby z trzech. Losuje mi ciagle druga i pierwsza liczbe. #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
void podaj( int wylosowane[], int wylosowanych ) { while( wylosowanych < 3 ) { cin >> wylosowane[ wylosowanych ]; wylosowanych++; } }
int losuj() { return rand() % 3; }
bool czyByla( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i ] != iLiczba ) return true; i++; } while( i < ile ); return false; }
void napisz( int liczba ) { cout << liczba << "\n"; }
int main() { int wylosowane[ 3 ]; int wylosowanych = 0; cout << "Podaj trzy liczby"; podaj( wylosowane, wylosowanych ); int losowane; int liczba; while( wylosowanych < 2 ) { losowane = losuj(); liczba = wylosowane[ losowane ]; if( !czyByla( liczba, wylosowane, wylosowanych ) ) { napisz( liczba ); wylosowanych++; } } return 0; } Przykladowe logi to Podaj trzy liczby input: 1 2 3 2 1
|
|
Luq |
» 2016-07-28 12:42:03 Dopisz w mainie srand( time( NULL ) ) |
|
RockerFeller Temat założony przez niniejszego użytkownika |
» 2016-07-28 12:54:12 Niezle zapomnialem najwazniejszej rzeczy. Ale itak dalej Podaj trzy liczby input: 3 33 333 33 3 |
|
Luq |
» 2016-07-28 13:10:01 Skopiowałem Twój kod u siebie, dodałem na początku maina srand i u mnie losuje różne liczby.
Zmodyfikuj funkcję czyByla, bo nie działa jak należy |
|
RockerFeller Temat założony przez niniejszego użytkownika |
» 2016-07-28 13:31:40 Tia teraz wypisuje losowo... ale tylko jedna liczbe. bool czyByla( int iLiczba, int tab[], int ile ) { if( ile == 0 ) return false; int i = 0; while( i < 3 ); { if( tab[ i ] = iLiczba ) return true; i++; } return false; }
int main() { srand( time( NULL ) ); int wylosowane[ 3 ]; int wylosowanych = 0; cout << "Podaj trzy liczby"; podaj( wylosowane, wylosowanych ); int losowane; int liczba; while( wylosowanych < 2 ) { losowane = losuj(); liczba = wylosowane[ losowane ]; if( !czyByla( liczba, wylosowane, wylosowanych ) ) { napisz( liczba ); wylosowanych++; } } return 0; |
|
Luq |
» 2016-07-28 14:04:59 Trochę ze złej strony do tego podchodzisz. Najlepiej stwórz sobie zmienną, w której przechowasz wynik pierwszego losowania i wynik drugiego losowania porównaj z tą zmienną.
Co do kodu, to po warunku pętli while nie stawiaj średnika, a w ifie uważaj na różnicę między = a == |
|
RockerFeller Temat założony przez niniejszego użytkownika |
» 2016-07-28 14:31:13 Tak to jest jak sie spieszy... Skopiowalem z do...while; razem ze srednikiem:/ -------edit------- Troche kombinowania i... #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
void podaj( int wylosowane[], int wylosowanych ) { while( wylosowanych < 3 ) { cin >> wylosowane[ wylosowanych ]; wylosowanych++; } }
int losuj() { int liczba = rand() % 3; return liczba; }
bool czyByla( int iLiczba, int tab[], int ile ) { if( ile == 0 ) return false; int i = 0; while( i < 2 ) { if( tab[ i ] == iLiczba ) return true; i++; } return false; }
void napisz( int liczba ) { cout << liczba << "\n"; }
int main() { srand( time( NULL ) ); int tab[ 2 ]; int wylosowane[ 3 ]; int wylosowanych = 0; cout << "Podaj trzy liczby"; podaj( wylosowane, wylosowanych ); int losowane; int liczba; int i = 0; while( wylosowanych < 2 ) { losowane = losuj(); liczba = wylosowane[ losowane ]; if( !czyByla( liczba, tab, i ) ) { napisz( liczba ); tab[ i ] = liczba; i++; wylosowanych++; } } return 0; } Dzieki za wskazowki :) |
|
« 1 » |