ciao, ho riscontrato un problema in un esercizio dove bisogna scrivere una funzione in c che deve cercare un numero all'interno di un vettore e restituire tutte le sue occorrenze, ma quando chiamo la funzione nel main l'esecuzione si blocca e non riesco a capire dove sbaglio. La funzione che ho scritto è questa:
codice:int *cerca (int *vettore,int elem,int n) { int i, *vett=(int*)malloc(n*sizeof(int)),j=0;/*dichiaro le variabili locali*/ if (vett==NULL) return NULL; for(i=0;i<n;i++) vett[i]=-1; for (i=j=0;i<n;i++)/*faccio un ciclo che mi cerca l'elemento*/ if (vettore[i]==elem) vett[j++]=i; return vett; }
vi posto anche il main:
codice:int main() { int *vettore,n,i, elem, *vett;/*dichiaro le variabili locali al main e il puntatore*/ /*chiedo e alloco il numero di elementi del vettore*/ printf("Quanti numeri si vogliono nel vettore? "); scanf("%d",&n); vettore=(int*)malloc(n*sizeof(int)); if (vettore==NULL){/*controllo che l'allocazione sia andata a buon fine*/ printf("Errore nell\'allocazione"); exit(EXIT_FAILURE); } /*genero casualmente il vettore*/ printf("\n\nVettore generato casualmente:"); srand(time(NULL)); for(i=0;i<n;i++) { vettore[i]=(rand()%100); printf("%d ",vettore[i]); } /*chiedo che elemento si deve cercare all'interno del vettore*/ printf("\n\nChe numero si desidera cercare?"); scanf("%d",&elem); /*cerco l'elemento nel vettore non ordinato*/ printf("\n\nLa posizione dell\'elemento inserito è: "); if((vett=cerca(vettore,elem,n)==NULL)) { printf("Errore nell\'allocazione"); return 1; } for(i=0;i<n && vett[i]!=-1;i++) printf(" %d",vett[i]+1); /*ordino il vettore attraverso la funzione "ordina" e lo stampo*/ printf("\n\nVettore ordinato: "); ordina(vettore,n); for(i=0;i<n;i++) printf("%d ",vettore[i]); /*cerco l'elemento nel vettore ordinato attraverso la funzione "cerca_ordinato" e stampo la sua posizione*/ printf("\nLa posizione del valore inserito è: %d",cerca_ordinato(vettore,elem,n)); /*dealloco il vettore*/ free(vettore); return 0; }

Rispondi quotando