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