Losowanie liczb całkowitych bez powtórzeń
Ostatnio zmodyfikowano 2014-05-14 19:27
Webmast-er Temat założony przez niniejszego użytkownika |
Losowanie liczb całkowitych bez powtórzeń » 2014-05-14 19:12:48 Mam problem z programem do losowania liczb całkowitych bez powtórzeń, który pisze do lekcji 21 (zadanie nr. 2). Podaje 10 liczb i 8 z nich program miał wypisać bez powtórzeń, lecz ich nie wypisuje. #include <iostream> #include <cstdlib> #include <ctime> #include <conio.h>
using namespace std;
int losujliczbe() { int liczba; srand( time( NULL ) ); liczba =( rand() % 10 ) + 1; return liczba; }
bool sprawdzliczby( int tab[], int gotowe[], int got, int losowa ) { int i = 0; do { if( tab[ losowa ] == gotowe[ i ] ) { i++; return true; } } while( i < got ); return false; }
int wczytajliczbe() { int liczba; do { cin.clear(); cin.sync(); cin >> liczba; if( !cin.good() ) { cout << "Nieprawidlowy format liczby!" << endl; } if( !( liczba > 0 ) &&( liczba < 100 ) ) { cout << "Niestety liczba nie miesci sie w przedziale!" << endl; } if(( !cin.good() ) ||( !( liczba > 0 ) &&( liczba < 100 ) ) ) { cout << "Podaj ponownie liczbe: "; } } while(( !cin.good() ) ||( !( liczba > 0 ) &&( liczba < 100 ) ) ); return liczba; }
int main() { cout << "Losowanie bez powtorzen z podanymi zmodyfikowane" << endl; cout << "Podaj liczby z przedzialu od 1 do 100" << endl << endl; int gotowe[ 8 ], got = 8, tablica[ 100 ], iw = 10, liczba, i = 0; do { cout << "Podaj " << i + 1 << " liczbe: "; liczba = wczytajliczbe(); tablica[ i ] = liczba; i++; } while( i < iw ); i = 0; do { liczba = losujliczbe(); if( sprawdzliczby( tablica, gotowe, got, liczba ) == false ) { gotowe[ i ] = tablica[ liczba ]; i++; } } while( i < got ); i = 0; do { cout << i + 1 << ". Numerek: " << gotowe[ i ] << endl; i++; } while( i < got ); return 0; }
|
|
pekfos |
» 2014-05-14 19:27:07 Funkcje losujliczbe() i sprawdzliczby() są błędne, a tą drugą jeszcze wywołujesz z niepoprawnymi argumentami. |
|
« 1 » |