Questo è il codice evidentemente sbagliato, ma non riesco a capire dov'è che sbaglio!!
In sintesi l'utente digiterà prima la dimensione dell'array, poi digita i numeri e infine il numero che deve essere cercato (key). Ho dovuto svolgere questo esercizio con la ricorsione, ma il programma si blocca e non capisco il perchè!
PS: uso il "dev C++ " per programmare col linguaggio C.
#include <stdio.h>
#include <stdlib.h>
//protos
int linear_search(const int a[], int key, int low, int high);
void implemention_sort(int a[], int size);
//il programma inizia col main
int main(int argc, char *argv[]){
int size, count, key;
printf("quanti numeri devi inserire? : \t");
scanf("%d\n", &size);
int array[size];
printf("inserisci i numeri:\n");
for (count = 0; count < size; count++){
scanf("%d\n\n", &array[count]);//non gli sto mettendo il & e mi ha detto che ho sbagliato
}//fine for
implemention_sort(array, size);
printf("ecco l'array ordinato: \n");
for(count = 0; count < size; count++){
printf("\n %d \n", array[count]);
}//fine for
printf("inserisci il numero da cercare: \t");
scanf("%d\n", &key);
printf("\n\n[%d]", linear_search(array, key, 0, size - 1));
system("PAUSE");
}//fine main
//funzioni
int linear_search(const int array[], int key, int low, int high){
int middle = (low + high)/2;
if (key < array[middle]){
linear_search(array, key, 0, middle - 1);
}//fine if esterno
else if(key > array[middle]){
linear_search(array, key, middle + 1, high);
}//fine else if esterno
else if(key == array[middle]){
return middle;
}//fine secondo else if
else{
printf("-1 significa che non è stato trovato.");
return -1;
}//fine else
}//fine funzione
//alra funzione
void implemention_sort(int a[], int size){
int j; //contatore
int temp;
if (size == 0){
}//fine if
else{
for (j = 0; j < size; j++){
if (a[j + 1] < a[j]){
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}//fine for
}//fine for
implemention_sort(a, size - 1);
}//fine else
}//fine funzione
Grazie mille dell'aiuto