Rozdział 21 - zadanie 1
Ostatnio zmodyfikowano 2015-10-14 17:37
Mar11n1 Temat założony przez niniejszego użytkownika |
Rozdział 21 - zadanie 1 » 2015-10-11 20:37:10 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." Oto moje rozwiązanie, wygląda na to, że działa dobrze, ciekawi mnie tylko to, czy można ten program jakoś ulepszyć (zoptymalizować). #include <iostream> #include <cstdlib> #include <ctime> using namespace std;
void wypelnij( int tablica[] ) { for( int i = 0; i < 3; i++ ) { cout << "Podaj liczbe " << i + 1 << ": "; cin >> tablica[ i ]; } cout << endl; }
void odczytaj( int tablica[], int indeks ) { for( int i = 0; i < indeks; i++ ) { cout << tablica[ i ] << " "; } cout << endl << endl; }
int losowanie( int tablica[] ) { return rand() % 3; }
bool czySiePowtorzyla( int tablica[], int liczba, int indeks ) { if( indeks == 0 ) return false; for( int i = 0; i < 2; i++ ) { if( tablica[ i ] == liczba ) return true; } return false; }
int main() { srand( time( 0 ) ); int wpisaneLiczby[ 3 ], wylosowaneLiczby[ 2 ]; wypelnij( wpisaneLiczby ); odczytaj( wpisaneLiczby, 3 ); int wylosowanaLiczba, i = 0; do { wylosowanaLiczba = wpisaneLiczby[ losowanie( wpisaneLiczby ) ]; if( czySiePowtorzyla( wylosowaneLiczby, wylosowanaLiczba, i ) == false ) { wylosowaneLiczby[ i ] = wylosowanaLiczba; i++; } } while( i < 2 ); odczytaj( wylosowaneLiczby, 2 ); return 0; }
|
|
ktos-tam |
» 2015-10-14 15:32:07 Nie czytałem dokładnie kodu. Jeżeli masz 3 liczby, a chcesz wylosować i wypisać dwie, bardziej będzie wylosować liczbę, która nie zostanie wypisana. Natomiast losując, sprawdzając, czy wylosowana liczba się powtórzyła i powtarzając te kroki, póki nie zostanie wylosowana liczba, można teoretycznie czekać w nieskończoność. |
|
carlosmay |
» 2015-10-14 17:37:28 Nie czytałem dokładnie kodu. Jeżeli masz 3 liczby, a chcesz wylosować i wypisać dwie, bardziej będzie wylosować liczbę, która nie zostanie wypisana. |
Niezgodne z treścią zadania. int losowanie( int tablica[] ) { return rand() % 3; }
|
Przekazujesz tablicę i jej nie używasz. |
|
« 1 » |