Poziom 2 lekcja 21 zadanie nr. 1 losowanie bez powtórzeń.
Ostatnio zmodyfikowano 2016-09-06 14:40
Damfled Temat założony przez niniejszego użytkownika |
Poziom 2 lekcja 21 zadanie nr. 1 losowanie bez powtórzeń. » 2016-09-05 17:18:33 Cześć, mam mały problem z zadaniem pierwszym ponieważ losuje mi również powtórzenia i nie wiem jak temu zaradzić. Przemierzając forum w poszukiwaniu odpowiedzi mój program został troche zmodyfikowany ale tez nic nie dało. Ostatni temat z jakiego korzystałem: http://cpp0x.pl/forum/temat/?id=22662. Wklejam poniżej najświeższą wersję i proszę o pomoc. :) Treść zadania: Napisz program, który wczyta 3 liczby podane przez użytkownika do tablicy, a następnie wylosuje 2 z nich bez powtórzeń. Wynik wypisz na ekran. Postaraj się napisać ten program w oparciu o funkcje. #include <iostream> #include <cstdlib> #include <ctime> int podaj() { int a; bool ok; do { std::cin >> a; ok = std::cin.good(); std::cin.clear(); std::cin.sync(); } while( ok == 0 ); return a; } int losuj() { return std::rand() % 3; } bool sprawdz( int liczba, int tab[], int ile ) { if( ile <= 0 ) return true; int licznik = 0; do { if( tab[ licznik ] == liczba ) { return false; } licznik++; } while( licznik < ile ); return true; } void wyswietl( int tab1[], int tab2[], int ilep, int iled ) { int licznik = 0; do { std::cout << tab1[ licznik ] << ", "; licznik++; } while( licznik < ilep ); std::cout << "\n"; licznik = 0; do { std::cout << tab2[ licznik ] << ", "; licznik++; } while( licznik < iled ); std::cout << "\n"; licznik = 0; do { std::cout << tab1[ tab2[ licznik ] ] << ", "; licznik++; } while( licznik < iled ); } int main() { srand( time( NULL ) ); int pierwszat[ 3 ]; int drugat[ 2 ]; int elementyp = 0; int elementyd = 0; int pojemnoscp = 3; int pojemnoscd = 2; do { int liczby = podaj(); pierwszat[ elementyp ] = liczby; elementyp++; } while( elementyp < pojemnoscp ); do { int wylosowane = losuj(); if( sprawdz( wylosowane, drugat, elementyd ) == true ); { drugat[ elementyd ] = wylosowane; elementyd++; } } while( elementyd < pojemnoscd ); wyswietl( pierwszat, drugat, pojemnoscp, pojemnoscd ); return 0; }
|
|
mateczek |
» 2016-09-06 05:42:21 #include <iostream> #include <ctime> using namespace std; int main() { srand( time( NULL ) ); int tablica[ 3 ]; cin >> tablica[ 0 ] >> tablica[ 1 ] >> tablica[ 2 ]; int losuj1 = rand() % 3; int losuj2; do { losuj2 = rand() % 3; } while( losuj2 == losuj1 ); cout << "dwie wylosowane liczby to: " << tablica[ losuj1 ] << " i " << tablica[ losuj2 ] << endl; }
|
|
Damfled Temat założony przez niniejszego użytkownika |
» 2016-09-06 14:40:40 Dziękuję za pomoc. :) |
|
« 1 » |