[Lekcja 21] Losowanie bez powtórzeń zad.1
Ostatnio zmodyfikowano 2013-04-14 18:23
Loreth Temat założony przez niniejszego użytkownika |
[Lekcja 21] Losowanie bez powtórzeń zad.1 » 2013-04-08 17:58:16 Witam. Mam lekki problem z pierwszym zadaniem domowym z tego działu, tj. "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". Starałem napisać się go samodzielnie od zera, zamiast kopiować przykład z lekcji i go modyfikować. Niestety liczby z niewiadomej mi przyczyny się powtarzają. Chciałbym wiedzieć co jest tego powodem. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; bool bezPowtorzen( int wylosowana, int tab[], int wylosowane ) { if( wylosowane == 0 ) return false; int licznik = 0; do { if( tab[ licznik ] == tab[ wylosowana ] ) return true; licznik++; } while( licznik < wylosowane ); return false; } int wylosuj() { return( rand() % 3 ) + 0; }
int main() { srand( time( NULL ) ); int a[ 3 ], licznik = 0, b[ 2 ]; cout << "Podaj 3 liczby: "; do { cin >> a[ licznik ]; licznik++; } while( licznik < 3 ); licznik = 0; do { int wylosowana = wylosuj(); if( bezPowtorzen( wylosowana, a, licznik ) == false ) { b[ licznik ] = a[ wylosowana ]; licznik++; } } while( licznik < 2 ); licznik = 0; cout << "Wylosowane liczby to: "; do { cout << b[ licznik ] << ", "; licznik++; } while( licznik < 2 ); return 0; }
|
|
MrPoxipol |
» 2013-04-08 18:17:58 Masz błąd w funkcji sprawdzającej. W linijce: if( tab[ licznik ] == tab[ wylosowana ] ) W głównej funkcji w tym if'ie(domyśl się, którym ;p) musisz obsłużyć to chociażby switchem(albo if'em). Czyli: switch( wylosowana ) { case 0: case 1: case 2: }
Rozwiązania Ci nie podam, sam musisz to zauważyć ;) |
|
Loreth Temat założony przez niniejszego użytkownika |
» 2013-04-13 10:26:35 Starałem się przeanalizować tego if'a, ale twoja podpowiedź jest dla mnie trochę nie jasna i wciąż nie rozumiem gdzie popełniłem błąd ;( |
|
empty2102 |
» 2013-04-14 18:11:51 << removed >> |
|
pekfos |
» 2013-04-14 18:23:36 int w1 = wylosuj(), w2; while(( w2 = wylosuj() ) == w1 );
I tyle. |
|
« 1 » |