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 »  |