sweetema (Normal User)
Rookie
Messaggi: 32
Iscritto: 28/01/2009
|
xkè non mi funziona??????????????????
Codice sorgente - presumibilmente C++ |
#include<iostream.h> using std::cout; using std::cin; using std::endl; int ricercaBinaria(int[],int,int,int,int); int a[10]={6,9,67,34,1,40,55,8,38}; int key; int main() { cout<<"l'array non ordinato è:\n"; for(int y=0;y<9;y++) { cout<<a[y]<<"\t"; } for(int x=1;x<9;x++) { int insert=a[x]; int moveitem=x; while((moveitem>0)&&(a[moveitem-1]>insert)) { a[moveitem]=a[moveitem-1]; moveitem--; } a[moveitem]=insert; } cout<<"\nl'array ordinato è:\n"; for(int k=0;k<9;k++) { cout<<a[k]<<"\t"; } cout<<"\ninserire l'elemento da cercare nell'array\n"; cin>>key; int element=ricercaBinaria(a,9,key,a[0],a[8]); if(element!=-1) cout<<"l'elemento si trova in posizione "<<element; else cout<<"l'elemento non è nell'array"; cout<<endl; return 0; } int ricercaBinaria(int a[],int size, int searchkey,int low,int high) { int middle; while(low<=high) { middle=((low+high)/2); if(a[middle]==searchkey) return middle; else if(searchkey<a[middle]) high=middle-1; else low=middle+1; } return -1; }
|
Ultima modifica effettuata da sweetema il 09/02/2009 alle 13:46 |
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
a cosa servono gli utlimi due parametri della funzione ricercaBinaria? high, e low?
io la farei cosi:
Codice sorgente - presumibilmente C++ |
int ricercaBinaria(int a[],int size, int searchkey) { for(int middle =0;middle<size;middle++) if(a[middle]==searchkey) return middle+1; return -1; }
|
perchè dici che non funziona?
Un problema potrebbe essere il fatto, che l'indice che ritorna la funzione v incrementato di uno.
Ultima modifica effettuata da Overflow il 09/02/2009 alle 13:57 |
|
sweetema (Normal User)
Rookie
Messaggi: 32
Iscritto: 28/01/2009
|
gli ultimi 2parametri passati mi servono per fare una ricerca binaria. quella che mi hai suggerito te è una ricerca lineare,cioè faccio tanti confronti quanti sono gli elementi dell'array!!!io ne vojo fare la metà,xsemplificare il lavoro!!!non mi funziona xkè mi dice sempre ke l'elemento non è nell'array,anche se invece c'è!!!
|
|
gioser (Normal User)
Pro
Messaggi: 111
Iscritto: 03/10/2008
|
sbagli la chiamata: low e high sono gli indici e non i valori:
devi chiamarla così
Codice sorgente - presumibilmente C/C++ |
int element=ricercaBinaria(a,9,key,0,8);
|
Ciao!
Ultima modifica effettuata da gioser il 11/02/2009 alle 12:55 |
|
sweetema (Normal User)
Rookie
Messaggi: 32
Iscritto: 28/01/2009
|
si,l'avevo risolto poi...scusate se non ho posto poi il codice fatto bn...ma ho avuto da fare!!!ne approfitto anke xringraziare qst sito...ho fatto l'esame di programmazione e ho beccato 29....!!!!ciaooooooooooooooooo
|
|
gioser (Normal User)
Pro
Messaggi: 111
Iscritto: 03/10/2008
|
congratulazioni!
ora che farai? appendi la tastiera al chiodo oppure continui perché ti piace?
|
|