codice:#include <stdio.h> /* La macro ARRSIZE consente di calcolare il numero di elementi di un array di cui siano note le dimensioni a compile-time */ #define ARRSIZE(arr) (sizeof(arr)/sizeof(*(arr))) /* Cerca un elemento in un vettore di int; restituisce l'indice dell'elemento o -1 castato a unsigned long se non ha trovato nulla */ unsigned long findInVector(int Value, int * Vector, size_t VectorSize); /* Entrypoint */ int main(void) { /* Vettore in cui andiamo a memorizzare gli elementi */ int vector[5]; /* Posizione corrente nel vettore */ int pos; /* Ciclo che si ripete per ogni elemento del vettore */ for(pos=0;pos<ARRSIZE(vector);pos++) { /* Acquisizione del numero */ printf("Inserisci un numero per vector[%d]: ",pos); if(scanf("%d",&vector[pos])!=1) { /* Se la scanf restituisce un valore diverso da 1 significa che non è riuscita ad ottenere il numero (l'utente ha inserito una valore non numerico) */ puts("Valore non valido."); /* Svuota il buffer di input */ while(getchar()!='\n') ; /* Torna indietro di una posizione */ pos--; /* Procede con la prossima iterazione */ continue; } /* Cerca l'elemento nella parte di vettore finora caricata (escluso il valore corrente) */ if(findInVector(vector[pos],vector,(size_t)pos)!=(unsigned long)-1) { /* Se lo trova notifica l'errore */ puts("Numero gia' inserito."); /* Torna indietro di una posizione */ pos--; /* Procede con la prossima iterazione */ continue; } } /* Tutto ok */ return 0; } /* Cerca un elemento in un vettore di int; restituisce l'indice dell'elemento o -1 castato a unsigned long se non ha trovato nulla */ unsigned long findInVector(int Value, int * Vector, size_t VectorSize) { /* Posizione corrente */ unsigned long pos; /* Ciclo che si ripete per ogni elemento del vettore */ for(pos=0;pos<VectorSize;pos++) { /* Se il valore dell'elemento è uguale al valore da cercare la ricerca è finita */ if(Vector[pos]==Value) return pos; } /* Se si arriva qui significa che non è stato trovato nulla */ return (unsigned long)-1; }