Ho un file, questo sotto che si compila senza errori ma quando metto tutti i parametri alla fine mi dà un core dumped. Dov'è l'errore???
codice:#include <stdio.h> #include <malloc.h> /* PROTOTIPO FUNZIONE */ void bin_search(float *A, int n, int chiave, int *ris); /* PROGRAMMA CHIAMANTE*/ main() { /* DICHIARAZIONE VARIABILI */ float *A; int i, c; int n, chiave, logical; /* LETTURA ELEMENTI ARRAY */ printf("Inserire il numero di elementi formanti l'array: "); scanf("%d",&n); /* ALLOCAZIONE DINAMICA DELLA MEMORIA */ if(!(A = (float *)malloc(n*sizeof(float)))) abort(); /* LETTURA ELEMENTI ARRAY */ printf("\n"); for (i=0; i<=n-1; i++){ printf("Inserire il valore dell'elemento %d: ", c=i+1); scanf("%f", &A[i]); } /* NUMERO DA RICERCARE */ printf("\nInserire il numero che si desidera individuare: "); scanf("%d", chiave); bin_search(A, n, chiave, &logical); printf("%d", logical); free(A); } /****************** SPECIFICHE FUNZIONE *************************/ void bin_search(float *A, int n, int chiave, int *ris) { int i, ordine; int alto, basso, centro, pos; /* CONTROLLO ORDINE */ i = 0; ordine = 1; while(ordine == 1 && i<=n-1){ if(A[i] == A[i+1]-1) {ordine = 1;} else {ordine = 0;} i++; } /* SE L'ARRAY NON è ORDINATO ESCI */ if (ordine==0) {abort();} /* RICERCA BINARIA */ alto = 0; basso = n-1; pos = -1; do { centro = (alto+basso)/2; if (A[centro]==chiave) {pos = chiave;} else if (A[centro]<chiave) {alto = chiave+1;} else {basso = chiave-1;} } while(alto<=basso && pos==-1); if(pos!= -1) *ris = 1; else *ris = 0; }

Rispondi quotando


