Elenet.net
+1 voto
Devo scrivere una funzione che, presi in ingresso un array  di numeri interi, la dimensione dell'array stesso e un numero da cercare dica se tale numero è presente nell'array.
quesito posto 8 Marzo 2013 in Classe terza da Gianni Messina Esperto (736 punti)
  
Forse questo può aiutarvi!

Passaggio di un array come parametro di una funzione:

#define DIM 15
void cerca (int[ ], int);  //dichiarazione della funzione

main( )
{
int a[DIM];
cerca(a, 8);  // chiamata di funzione
}

int cerca (int a[ ], int n)  // definizione della funzione
{
 
// Implementate qui il codice di ricerca

}

3 Risposte

+2 voti
Risposta migliore

Ho ulteriormente modificato l'algoritmo affinchè faccia inserire la dimensione dell'array dall'utente stesso.

#include <stdio.h>

#include <stdlib.h>

int cerca (int[ ], int);  //dichiarazione della funzione
int DIM;
main( )
{
int m,n=0,ris; //m: variabile che contiene il valore da cercare inserito dall'utente
                     //n: contatore per scorrere le posizioni nell'array
                     //ris: variabile che contiene il risultato ritornato dalla funzione
                     //ris=0: non trovato; ris=i: trovato in posizione i;
printf("inserisci la dimensione del tuo array");
scanf("%d",&DIM);
printf("inserisci valore da cercare\n");
scanf("%d",&m);
int a[DIM];
 for(n=0; n<DIM;n++)
  {
    printf("Elemento %d:",n+1);
    scanf("%d",&a[n]);
  }
 
ris=cerca(a, m);  // chiamata di funzione
 
if(ris>0)
  printf("Trovato nella posizione %d\n", ris);
else
  printf("Non trovato\n");
 
system("PAUSE");
}
 
int j;
int cerca (int a[ ], int h)  // definizione della funzione
j=DIM;    
int i=0;
while (i<DIM)
{
if (h==a[i])
return i+1; //la funzione restituisce se l'elemento viene trovato nella posizione i, i+1 per evitare di partire da 0.
i=i+1;
}
return 0;
}
 
risposta inviata 12 Marzo 2013 da Emanuele Rizzo Esperto (238 punti)
Selezionata 12 Marzo 2013 da Gianni Messina
+4 voti
Ho modificato l'algoritrmo per fargli restituire la posizione nella quale l'elemento viene trovato.

Inoltre,ho inserito le righe di commento come documentazione del software

#include <stdio.h>
#include <stdlib.h>
#define DIM 3
int cerca (int[ ], int);  //dichiarazione della funzione

main( )
{
int a[DIM],m,n=0,ris; //m: variabile che contiene il valore da cercare inserito dall'utente
                     //n: contatore per scorrere le posizioni nell'array
                     //ris: variabile che contiene il risultato ritornato dalla funzione
                     //ris=0: non trovato; ris=i: trovato in posizione i;

printf("inserisci valore da cercare\n");
scanf("%d",&m);

 for(n=0; n<DIM;n++)
  {
    printf("Elemento %d:",n+1);
    scanf("%d",&a[n]);
  }

ris=cerca(a, m);  // chiamata di funzione

if(ris>0)
  printf("Trovato nella posizione %d\n", ris);
else
  printf("Non trovato.");
 
system("PAUSE");
}

int cerca (int a[ ], int h)  // definizione della funzione
{ int i=0;
while (i<DIM)
{
if (h==a[i])
return i+1; //la funzione restituisce se l'elemento viene trovato nella posizione i, i+1 per evitare di partire da 0.
i=i+1;
}
return 0;
}
risposta inviata 12 Marzo 2013 da Michele La Rosa Corsista (95 punti)
+2 voti

Ecco qui l'algoritmo svolto.

#include <stdio.h>
#include <stdlib.h>
#define DIM 3
int cerca (int[ ], int);  //dichiarazione della funzione

main( )
{
//int DIM;
//printf("inserisci la dimensione del vettore");
//scanf("%d",&DIM);
int a[DIM],m,n=0,ris;

printf("inserisci valore da cercare");
scanf("%d",&m);

 for(n=0; n<DIM;n++)
  {
    printf("Elemento %d:",n+1);
    scanf("%d",&a[n]);
  }
    
ris=cerca(a, m);  // chiamata di funzione
if(ris==1)
printf("TROVATO %d",);
else
printf("NON TROVATO");
system("PAUSE");
return 0;
}

int cerca (int a[ ], int h)  // definizione della funzione
{ int i=0;
while (i<DIM)
{
if (h==a[i])
return 1;
i=i+1;

      
      
}
return 0;
}

 

 

risposta inviata 12 Marzo 2013 da Marco Zaccaria Corsista (149 punti)

Domande correlate

0 voti
2 risposte
quesito posto 8 Marzo 2013 in Classe terza da Gianni Messina Esperto (736 punti) | 222 visite
+2 voti
3 risposte
+1 voto
1 risposta
quesito posto 20 Marzo 2013 in Classe terza da Giovanni Mattaliano Corsista (74 punti) | 1,225 visite
778 domande
1,565 risposte
639 commenti
1,445 utenti