Salve ragazzi, ho riscontrato un problema di comprensione su alcune righe di codice nonostante abbia fatto dall'inizio il diagramma a blocchi corrispondente.
Devo cercare in quale indice/posizione si trova un elemento dell'array digitato dall'utente.
Il codice sorgente è questo:
//RICERCA LINEARE VUOL DIRE RICERCARE UN VALORE DETTO VALORE CHIAVE. SI PROCEDE CONFRONTANDO OGNI ELEMENTO
//DELL'ARRAY CON IL VALORE CHIAVE
//E' NECESSARIO UN CERTO NUMERO DI CONFRONTI CIRCA PARI ALLA META' DEL NUMERO DEGLI ELEMENTI DELL'ARRAY STESSO
#include<iostream>
using namespace std;
int RicercaLineare(const int Vettore[],int Chiave, int DimensioneVettore);
int main()
{
const int arraySize=100;//INFORMA IL COMPILATORE CHE LA DIMENSIONE DELL'ARRAY
//E' COSTANTE E NON DEVE ESSERE MODIFICATO DAL PROGRAMMATORE,
//CIOE UGUALE A 100
int a[arraySize] ; //DICHIARAZIONE DELL'ARRAY CHE HA UNA DIMENSIONE PARI
//ALL'ESPRESSIONE TRA [] CHE EQUIVALE A 100
int ChiaveDiRicerca;//DICHIARAZIONE VARIABILE CHIAVE DI RICERCA, OVVERO IL VALORE
//DELL'ELEMENTO QUALSIASI
//DEL VETTORE CONSIDERATO
int posizione; //DICHIARAZIONE VARIABILE POSIZIONE , SERVE A CAPIRE IN CHE
//POSIZIONE/INDICE E' PRESENTE L'ELEMENTO
//CERCATO
//COSTRUZIONE DELL'ARRAY
for(int i=0;i<arraySize;i++) //CONDIZIONE DEL CICLO FOR
a=2*i;
cout<<"Inserisci la chiave di ricerca:"<<endl; //INSERISCI IL VALORE DELL'ELEMENTO CHE VUOI
//TROVARE
//CIOE' VUOI SAPERE CHE INDICE OCCUPA
cin>>ChiaveDiRicerca;//INSERISCO VALORE RANDOM DA TASTIERA
posizione=RicercaLineare(a,ChiaveDiRicerca,arraySize); //LA POSIZIONE DELL'ELEMENTO E'
//DATA DA UNA FUNZIONE CHIAMATA
if(posizione!=-1) //SE LA POSIZIONE E' DIVERSA DA -1 , VALORE SENTINELLA
cout<<"Valore trovato in posizione"<<posizione<<endl; //VALORE TROVATO IN POSIZIONE ".."
else //ALTRIMENTI (CONDIZIONE FALSA)
cout<<"Valore in nessuna posizione o indice dell'array"<<endl;
return 0;
}
int RicercaLineare(const int Vettore[], int Chiave, int DimensioneVettore)
{
for(int n=0;n<DimensioneVettore;n++)
if(Vettore[n]==Chiave)
return n;
return -1;
}
Allora io ho interpretato in questo modo:
Costruisco il vettore che ha dimensione 100 e i rispettivi elementi occupano gli indici che vanno da: 0 a 99 in questo modo (valore elementi in ciascuna cella): 0,2,4,6,-----,198
Fin qui ci siamo.
Inserisco un valore ipotetico che può o non può far parte della cella del vettore.
Esempio:
Inserisco il valore 2, vedo che cella occupa o con che indice/posizione viene indicato.
Questo 2 è la chiave di ricerca ed è il parametro attuale della funzione chiamante .
Questo parametro viene passato per valore alla funzione chiamata che provvede ad un'alias chiamato parametro formale , quindi viene fatta una copia detto in modo spiccio.
Quindi la funzione chiamata opera sulla copia e non sulla variabile.
IL MIO DUBBIO: non riesco a comprendere cosa fa in questo caso la funzione chiamata.
Ovvero la funzione RicercaLineare. Non so come fa ad effettuare questa ricerca.
Odio il libro che riporta tale esempio perché è mancante di commenti.
Libro:Fondamento di c++ Deitel
Potreste aiutarmi?Vi ringrazio anticipatamente.