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;
}