Salve, sto sbattendo la testa su questo codice da ieri sera...in poche parole, quello che dovrebbe fare e' questo:

leggere elementi di un vettore dati in input dall'utente.
leggere un numero k dato dall'utente
dire quale dei numeri presente dentro al vettore e' piu prossimo a k.

codice:
#include<stdio.h>

#include<stdlib.h>

#define MAX 10

#define SUP_MAX 1000

int i,vet[MAX],k,q,r=0,val_minori[MAX],val_massimi[MAX]; //MAX dev'essere uguale sia per vet che per vet_ris !!!

int val_minimo_max=0,val_massimo_min=SUP_MAX,cont1=0,cont2=0,lol1=0,lol2=0;

main()



{



printf("Riempire il vettore. Max 10 elementi. -1 Per stoppare il riempimento.\n");

for(i=0;i<MAX;i++) {

	scanf("\n%d", &q);

	getchar();

	if(q>=SUP_MAX) {

		printf("\nValore TROPPO GRANDE ! ritenta...\n"); 

		continue; 

	}

	if(q!=-1) {

		vet[i]=q;

		++r; 

        }

	else break;

    }



printf("\nInserire un numero.Vi diro' quale numero nel vet e' piu vicino ad esso\n");

scanf("%d", &k);

getchar();



/*Cerco nel vettore se c'e' il numero uguale a quello da ricercare (cioe' k),nel caso,stampo a video ed esco dal progr.*/

for(i=0;i<r;i++) {

	if(k==vet[i]) {  

	printf("%d = %d ...e' quindi il numero piu' vicino\n", k, vet[i]);

	exit(0);

	   }

      }



for(i=0;i<r;i++) {

	if(k>vet[i]) { 

	val_minori[i]=vet[i]; 

	++lol1; }                //salva in un'array i valori minori di k

        if(k<vet[i]) {

	val_massimi[i]=vet[i];   //salva in un'array i valori maggiori di k

	++lol2;

	}

   }	                         

for(i=0;i<lol1;i++) { 	

	if(val_minori[i]>=val_minori[i+1]) 

	val_minimo_max=val_minori[i]; //tra i valori piu bassi di k, trovo il piu alto

        }

for(i=0;i<lol2;i++) {	

	if(val_massimi[i]<=val_massimi[i+1]) 

	val_massimo_min=val_massimi[i]; //tra i valori piu alti di k,trovo il piu basso

	}



for( ;val_minimo_max==k;val_minimo_max++) //conto quanto sono distante da k 

	++cont1; //aggiorno cont (la mia variabile contatore di ciclo)

for( ;val_massimo_min==k;val_massimo_min--) //faccio lo stesso, conto quanto son dist da k 

	++cont2;	//aggiorno un'altra variabile contatore di ciclo



//controllo quale dei due cicli qua sopra, ha ciclato di piu incrementando la var contatore...quello che ha ciclato meno

//conteneva il num piu vicino a sto benedetto numero k del ****.

if(cont1==cont2) printf("\nI numeri piu vicini a %d sono %d e %d\n\n",k,val_minimo_max-cont1,val_massimo_min+cont2); 

if(cont1>cont2) printf("\nIl numero piu vicino a %d e' %d\n\n",k,val_massimo_min+cont2);

else printf("\nIl numero piu vicino a %d e' %d\n\n",k,val_minimo_max-cont1);

//nono...non funziona un **** ..



}
Cioe' non riesco proprio a trovare sto benedetto numero all'interno del vettore che sia piu prossimo a k...

Okay certamente esistera' un algoritmo migliore e sopratutto funzionante, pero' vorrei davvero capire perche' la schifezza che ho scritto non funziona... poi se qualcuno ha un 'idea per implementare il tutto in a "better way", son tutto orecchie !

grazie !

p.s. mi scuso per il pessimo codice e le pessime variabili...in effetti sembro uno schizzofrenico con crisi epilettiche :-)