Salve sto realizzando un programma per la scuola ed il professore non ci ha spiegato come si fa la ricerca dicotomica e vuole che lo implementiamo in un programma già svolto sull'ordinamento dei vettori... Ho cercato un pò su internet (anche in questo forum) e alla fine sono riuscito a stendere un pò di righe ma a volte quando fa la ricerca non mi trova certi valori..
#include <iostream>
using namespace std;
int n,i,v[10],dim=20,m,j,k,cont,app;
//------------------------------------------------------------------------------
void dimensione_N ()
{
cout<<"Inserire la dimensione n del vettore (max 20)"<<endl;
do
cin>>n;
while (n<=1 || n>dim);
}
//------------------------------------------------------------------------------
void lettura_vettore ()
{
cout<<"\nLettura del vettore:\n"<<endl;
for (i=0;i<n-1;i++)
cin>>v[i];
}
//------------------------------------------------------------------------------
void leggi_k ()
{
cout<<"Leggi k: "<<endl;
cin>>k;
}
//------------------------------------------------------------------------------
void ricerca_elemento ()
{
int pos,i,j,sx=0,dx=n-1,md;
bool trovato=false;
for (i=0;i<n-2;i++)
{
for (j=i+1;i<n-1;i++)
{
if (v[i] >v[j])
{
app=v[i];
v[i]=v[j];
v[j]=app;
}
}
}
do
{
int md=(sx+dx)/2;
if ((v[sx]==k)||(v[dx]==k)||(v[md]==k))
trovato=true;
else
if (v[md]<k)
sx=md+1;
else
dx=md-1;
}
while ((sx<=dx)&&(!trovato));
if (trovato==true){
cout<<"TROVATO!"<<endl;
}
else
cout<<"NON TROVATO!"<<endl;
}
//------------------------------------------------------------------------------
int main()
{
//lo farò dopo
system("PAUSE");
return 0;
}
praticamente ho provato ad usare anche la variabile booleana però il professore non vuole
in sostanza richede di utilizzare la ricerca dicotomica per cercare un elemento k nel vettore letto col ciclo e contare quante volte k è presente e stampare a video anche la posizione..(non ho ancora fatto i parametri)
come si fa? grazie a tutti