Rozdział 21: Losowanie bez powtórzeń. Zadanie domowe do sprawdzenia.
Ostatnio zmodyfikowano 2015-12-13 17:07
KlusekPospolity Temat założony przez niniejszego użytkownika |
Rozdział 21: Losowanie bez powtórzeń. Zadanie domowe do sprawdzenia. » 2015-12-13 15:57:40 1. 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<ctime> #include<cstdlib> using namespace std;
void podaj( int tab[], int ile ) { int i = 0; int liczby; cout << "Podaj trzy liczby do tablicy:\n"; do { cin >> liczby; tab[ i ] = liczby; i++; } while( i < ile ); }
void wypisz( int tab[] ) { int licznik = 0; cout << "Wczytano liczby: "; do { cout << tab[ licznik ] << ","; licznik++; } while( licznik < 3 ); cout << endl << endl; }
int losuj( int max, int min ) { return( rand() % max ) + min; }
bool sprawdz( int tab[], int liczba, int wylosowane ) { if( wylosowane <= 0 ) return false; int licznik = 0; do { if( tab[ licznik ] == liczba ) return true; licznik++; } while( licznik < wylosowane ); return false; }
int main() { srand( time( 0 ) ); int tablica[ 3 ]; podaj( tablica, 3 ); wypisz( tablica ); int wylosowane = 0; int tablicaLosuj[ 2 ]; do { int liczba = tablica[ losuj( 3, 0 ) ]; if( sprawdz( tablicaLosuj, liczba, wylosowane ) == false ) { tablicaLosuj[ wylosowane ] = liczba; wylosowane++; } } while( wylosowane < 2 ); wylosowane = 0; cout << "Wylosowane liczby to: "; do { cout << tablicaLosuj[ wylosowane ] << ", "; wylosowane++; } while( wylosowane < 2 ); return 0; }
|
|
carlosmay |
» 2015-12-13 15:59:17 Czy działa prawidłowo? |
|
KlusekPospolity Temat założony przez niniejszego użytkownika |
» 2015-12-13 16:03:51 Działa prawidłowo, chciałbym wiedzieć czy jest jakiś prostszy sposób by to zrobić, czy ten którym to wykonałem jest w sam raz? |
|
carlosmay |
» 2015-12-13 17:07:18 Działa prawidłowo, chciałbym wiedzieć czy jest jakiś prostszy sposób by to zrobić |
Jest. Zadania są by przećwiczyć nabyte umiejętności. Z czasem i zdobywaną wiedzą okaże się, że coś co ma 150 linii można przy użyciu innych narzędzi napisać w 50 linii. Trzeba doświadczenia. np: void podaj( int tab[], int ile ) { int i = 0; cout << "Podaj trzy liczby do tablicy:\n"; do { cin >> tab[ i++ ]; } while( i < ile ); }
Zmiana pętli do..while na pętlę for jeszcze skróci zapis. void podaj( int tab[], int ile ) { cout << "Podaj trzy liczby do tablicy:\n"; for( int i = 0; i < ile; i++ ) cin >> tab[ i ]; } |
|
« 1 » |