Potresti creare una funzione in questo modo
codice:
#define CIFRE 9
#define USED -1
int diamoInumeri[CIFRE]; /*variabile globale*/
int validi; /*variabile globale*/
/*successivamente crei una funzione che inizializza il vettore*/
void inizializza (int n){
int i=0;
for (i=0;i<n;i++)
diamoInumeri[i] = i+1; /*le cifre da 1 a 9 che ci servono*/
validi=n; /*so che nel vettore ho n elementi validi*/
}
/*ora serve una funzione che mi generi i numeri casuali che mi servono*/
int generaNumero (){
int indice,
i=0,
ritorno;
indice = rand()%validi;
ritorno = diamoInumeri[indice];
for (i=indice;i<validi;i++)
diamoInumeri[i]=diamoInumeri[i+1];
validi--;
/*con queste due operazioni traslo indietro di una posizione i
i numeri validi coprendo quello utilizzato, inoltre decremento il
numero di elementi validi*/
return ritorno;
}
/*ora abbiamo tutte le funzioni che servono, proviamo per esempio a generare un po' di permutazioni delle cifre da 1 a 5*/
while (voglio permutazioni){
inizializza(5) /*così le cifre 6-9 sono inutilizzabili*/
for (i=0;i<5;i++)
printf ("%d ",generaNumero());
printf ("\n");
}
Con queste due funzioni (non ho provato a compilarle, potrebbero contenere qualche errore) dovresti riuscire a fare tutto.
Ciao!!