Forse ti sembra strano perché l'ho fatto con l'allocazione dinamica. Però se tu sai già che il numero di elementi è 21 puoi farlo anche con l'allocazione statica, cioè dichiarando l'array come avevi fatto.
Tu prova e poi ci fai sapere.
PS. Mi sono accorto che la variabile "riempito" non serviva a nulla... l'avevo detto che l'avevo scritto al volo!
codice:#include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX 100 /* funzione che ritorna 1 se "num" e' presente in "array" * e 0 se invece non e' presente */ int controlla_presenza(int *array, int size, int num) { int i; for(i=0; i<size; ++i) { if(array[i] == num) return 1; } return 0; } /* funzione che genera un array di numeri casuali e non ripetuti */ int * genera_casuali(int size) { int *array = (int *) malloc(size * sizeof(int)); int i, generato; for(i=0; i<size; ++i) { array[i] = 0; /* inizializzazione a zero */ } for(i=0; i<size; ++i) { do { generato = rand() % MAX + 1; } while(controlla_presenza(array, size, generato) == 1); array[i] = generato; } return array; } /* funzione che stampa un array di interi */ void stampa_array(int *array, int size) { int i; for(i=0; i<size; ++i) printf("%d\n", array[i]); } /* main */ int main() { srand(time(NULL)); int size; printf("Inserire dimensione: "); scanf("%d", &size); int *casuali = genera_casuali(size); stampa_array(casuali, size); return 0; }
![]()


Rispondi quotando