[C] Ricerca Lineare

Sant1
Dunque, non me la cavo tanto con il C quindi perdonatemi se vi presento dei programmi fatti altamente male...
Ho fatto questo programma che in pratica chiede 8 numeri da tastiera, li mette in ordine, e poi ti chiede un ulteriore numero da tastiera da ricercare all'interno dell'array ordinato tramite l'algoritmo di ricerca lineare. Infine chiede di stampare a schermo se il numero è stato trovato o meno, ed è qui che mi trovo in difficoltà... io sarei anche riuscito a farlo ma il codice non è granché presentabile, si vede da lontano che è fatto da uno che non se ne intende.
(solo l'ultima parte)

printf("\n Inserire un numero da ricercare all'interno dell'array ordinato:\n");
scanf("%d",& x); // x= numero da cercare
for(i=0;i<8;i++)
{
if (a==x)
{
trovato=1;
}
if(trovato==1)
break;
}
if(trovato==1)
{
printf("E' stato trovato");}
else
{
printf("NON e' stato trovato");
}


Questo come dicevo funziona, ma è bruttissimo...

Su internet invece ho trovato questo:

for (i = 0; i < 8; i++) {
if (A == x) {
return true;
}
}
return false;


ma non ho mai capito come funzionano i return e quindi non so come fare a stampare su schermo "è stato trovato" o "non è stao trovato"

Vi ringrzio sperando che qualcuno mi sappia aiutare ;)

Risposte
hamming_burst
Ciao,
"Sant":
Dunque, non me la cavo tanto con il C quindi perdonatemi se vi presento dei programmi fatti altamente male...
Ho fatto questo programma che in pratica chiede 8 numeri da tastiera, li mette in ordine, e poi ti chiede un ulteriore numero da tastiera da ricercare all'interno dell'array ordinato tramite l'algoritmo di ricerca lineare. Infine chiede di stampare a schermo se il numero è stato trovato o meno, ed è qui che mi trovo in difficoltà...

La consegna dell'esercizio è "ordinare l'array" e "utilizzare ricerca lineare"?

se lo scopo dell'esercizio è utilizzare la ricerca lineare allora l'ordinamento dell'array sarebbe inutile. Perchè per funzionare la ricerca non ha bisogno che l'array sia ordinato.

Sant1
l'esercizio dice di ordinare i numeri e poi fare la ricerca lineare di un numero da tastiera all'interno dell'array ordinato, comunque non è questo il punto, il mio problema sta nel fatto che non so come scrivere a schermo se è stao trovato o meno nel caso dei return, oppure rendere più presentabile quello fatto da me ;)

Omega1
Ciao!

L' istruzione return si usa all' interno di una funzione.
Con essa, si provoca l' arresto della funzione, e si assegna il valore di ritorno.
Ecco un esempio:
int test (int  *A, int fine, int x)  // passo il vettore, la sua dimensione, e il numero da cercare come argomento
{
   for (i = 0; i < fine; i++) 
   {
       if (A[i] == x) return 1 // alla prima occorrenza, la funzione termina, e restituisce 1 ; 
   }
  return 0; nessuna occorrenza è stata trovata
}


Nel programma, ci sara:
  ...
  printf("\n Inserire un numero da ricercare all'interno dell'array ordinato:\n");
  scanf("%d",& x); // x= numero da cercare
  if (test(a, 8, x) == 1)
  {
      printf("E' stato trovato");
  }
  else
  { 
    printf("NON e' stato trovato"); 
  }
  ...

Sant1
si, penso che così possa andare... ti ringrazio ;)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.