Program działa poprawnie. Najważniejsza informacja. Zapis jest wprawdzie długi, ale wszystko co tylko się dało wyrzuciłem do osobnych funkcji, więc jestem umiarkowanie zadowolony.
Mam jedna pewną zagwozdkę.
Liczba, która ma zostać wylosowana musi pochodzić z tablicy. Ta część przebiegła bezproblemowo. Kolejnym warunkiem jest, aby się nie powtórzyła.
Zaasekurowałem się w ten sposób, że stworzyłem kolejną tablicę (odrzut[]) i po wylosowaniu pierwszej liczby zostaje ona wpisana właśnie do tej tablicy. Warunek jaki napisałem wygląda tak:
*****************
if( sprawdzenie( tablica , ile , liczba ) == true &&
odrzut[ 0 ] != liczba )
*****************
I tutaj pojawia się problem. Otóż przy pierwszym losowaniu w tejże tablicy (odrzut[]) nie ma jeszcze żadnej liczby, a właściwie to jest liczba, którą kompilator/program sobie przypisał(?!), a wartość zostaje dodana dopiero po wylosowaniu 1 liczby. Mam nadzieje, że nadążacie ;) Co jednak w przypadku, kiedy przed pierwszym losowaniu, jakimś cudem, ta przypisana(?!) liczba w tablicy odrzut[] będzie pokrywała się z pierwszą wylosowaną liczbą? A może w momencie kiedy tablica nie jest jeszcze uzupełniona, to program/kompilator traktuje ją jako pustą tablicę? Pogmatwane to, ale nie jestem w stanie tego rozgryść.
Pragnę, abyście stwierdzili czy mój tok rozumowania jest prawidłowy i czy program jest w porządku. Chodzi mi o ten jeden, konkretny przykład, gdzie do wylosowania są dwie liczby, bowiem przy większej ilości liczb do wylosowania przerobiłem kod dodając kolejną funkcję z tablicą.
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int losowanie()
{
return rand();
}
bool sprawdzenie( int t[], int ile, int liczba )
{
int i = 0;
do
{
if( t[ i ] == liczba )
return true;
else;
i++;
} while( i < ile );
return false;
}
int wpisywanie( int t[], int ile )
{
int i = 0;
int x = 1;
cout << "Podaj trzy liczby do tablicy:" << endl;
do
{
cout << "Liczba nr" << x << ": ";
cin >> t[ i ];
i++;
x++;
} while( i < ile );
}
int wypisywanie( int t[], int ile )
{
int i = 0;
int x = 1;
cout << "Wypisze wylosowane liczby" << endl;
do
{
cout << "Liczba nr" << x << ": " << t[ i ] << endl;
i++;
x++;
} while( i < ile );
}
int main()
{
srand( time( 0 ) );
int tablica[ 3 ];
int wynik[ 2 ];
int odrzut[ 1 ];
int ilosc = 0;
int ile = 3;
wpisywanie( tablica, ile );
cout << endl << "********************" << endl << endl;
do
{
int liczba = losowanie();
if( sprawdzenie( tablica, ile, liczba ) == true && odrzut[ 0 ] != liczba )
{
wynik[ ilosc ] = liczba;
ilosc++;
odrzut[ 0 ] = liczba;
}
} while( ilosc < 2 );
wypisywanie( wynik, 2 );
return 0;
}
endl;
i++;
x++;
}while( i