Witam, do pewnego programu jest mi potrzebna funkcja losowania liczb od 0 do 26 bez powtórzeń, mam pewną funkcję, którą podam niżej, jednak czasami wylosowana liczba jest ujemna lub wychodząca poza zakres id 1 do 26, nie wiem co dalej z tym zrobić, będę wdzięczny za pomoc.
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int losowanie()
{
return(rand()%26+1);
}
int sprawdzanie( int liczba, int s[], int ile )
{
int i = 0;
if( ile == 0 )
return false;
do
{
if( s[ i ] == liczba )
return true;
i++;
}
while( i < 26 );
return false;
}
int wypisywanie( int s[], int ile )
{
int a = 1;
ile = 0;
do
{
cout << "Liczba " << a << " to: " << s[ ile ] << endl;
a++;
ile++;
}
while( ile < 26 );
}
int main()
{
srand( time( 0 ) );
unsigned liczba, ile = 0;
int s[ 26 ];
cout << "Losowanie liczb bez powtorzen" << endl;
do
{
liczba = losowanie();
if( sprawdzanie( liczba, s, ile ) == false )
s[ ile ] = liczba;
ile++;
}
while( ile < 26 );
wypisywanie( s, ile );
return 0;
}
A Oto wynik jednego z losowań(Na czerwono zaznaczone wyniki wykraczające poza przedział):
http://prntscr.com/8tg85x