PDA

Visualizza la versione completa : [C] aiuto su algoritmo di ricerca binaria


Skass89
23-12-2009, 15:21
ragazzi ho questa pseudocodifica ma di cui nn ciò capito una mazza vi va ri aiutarmi a ragionare?




Assegna a trovato il valore 0
Inizializza gli estremi dell’intervallo di ricerca –inf esup

While (inf <=sup) and (not trovato)

Calcola la posizione centrale
m=Parte intera[(inf+sup)/2]
If x > A[m]
assegna a inf il valore m+1
Else If x < A[m]
assegna a sup il valore m-1
Else assegna a trovato il valore 1



le variabili inf e sup cm le devo utilizzare?
cosa dovrei avere come risultato del programma? trovato = si o no ?

Skass89
23-12-2009, 15:31
vabbè nel frattempo lo codificato senza capirci molto:




#include <stdio.h>
#define dim 15

int main(){

int a[dim] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int n, i, inf, sup, trovato;

printf("inserire valore da cercare = ");
scanf("%d", &n);


inf=0;
sup=0;
trovato=0;

while(inf<=sup && trovato==0){
i=dim/2;
if(n>a[i])
inf=i+1;
else if (n<a[i])
sup=i-1;
trovato=1;
}


printf("%d\n", trovato);

system ("pause");
return 0;
}



ma non mi funziona posso dargli in input un qualsiasi valore anche 100000 mi restitusce sempre 1...

oregon
23-12-2009, 16:52
Perchè



sup=0;


... sup deve essere 15 inizialmente

Era questa



i=dim/2;


l'operazione nello pseudocodice ? Non mi pare ...



if(n>a[i])
inf=i+1;
else if (n<a[i])
sup=i-1;


qui mi sembra ci fosse un else ...

Skass89
23-12-2009, 16:56
oregon mio salvatore :zizi: continuo a fare errore del caxxo......sono quasi alla frutta.....comunque ora funziona grazie ancora!

Loading