Esercizio funzione
Salve a tutti, vorrei una mano con il seguente esercizio:
Realizzare (mediante la realizzazione di una funzione) un programma che determina se un numero è presente in un vettore e che ne restituisca la posizione in caso affermativo.
Ho fatto così:
Tuttavia, tutto sembra andare liscio fino a che non inserisco una dimensione del vettore > 3. Come mai?
Realizzare (mediante la realizzazione di una funzione) un programma che determina se un numero è presente in un vettore e che ne restituisca la posizione in caso affermativo.
Ho fatto così:
/* programma che determina se un numero è presente in un vettore e che ne restituisce la posizione in caso affermativo */ #include <iostream> using namespace std; int numero_e_posizione(int numero, int array[]) { int dim; cout << " Inserisci il numero : "; cin >> numero; for(int j=0; j<dim; j++) { if (numero == array[j]) { cout << " Il numero è presente nel vettore e si trova in posizione " << j <<endl; } } } int main () { int valore; int n; int indice; cout << "Inserire la dimensione del vettore : "; cin>>n; int array[n]; //inserimento di n elementi for (int j=0;j<n;j++) { cout << " Inserisci l'elemento " <<j+1<< " : "; cin >> array[j]; } //numero e posizione numero_e_posizione(valore, array); }
Tuttavia, tutto sembra andare liscio fino a che non inserisco una dimensione del vettore > 3. Come mai?
Risposte
Ciao
guardando alla veloce mi pare di capire che la variabile
Ho visto che crei la variabile ma non mi pare di vedere alcuna assegnazione
Vedo bene?
guardando alla veloce mi pare di capire che la variabile
dimnon assuma mai un valore.
Ho visto che crei la variabile ma non mi pare di vedere alcuna assegnazione
Vedo bene?
Ciao, grazie per la risposta.
Ho provato in quest'altro modo e funziona, ma devo inserire due volte la dimensione. C'è un modo per evitarlo?
Ho provato in quest'altro modo e funziona, ma devo inserire due volte la dimensione. C'è un modo per evitarlo?
/* programma che determina se un numero è presente in un vettore e che ne restituisce la posizione in caso affermativo */ #include <iostream> using namespace std; int numero_e_posizione(int numero, int array[]) { int n; cout << "Inserire la dimensione del vettore : "; cin>>n; cout << " Inserisci il numero : "; cin >> numero; for(int j=0; j<n; j++) { if (numero == array[j]) { cout << " Il numero è presente nel vettore e si trova in posizione " << j <<endl; } } } int main () { int valore; int n; int indice; cout << "Inserire la dimensione del vettore : "; cin>>n; int array[n]; //inserimento di n elementi for (int j=0;j<n;j++) { cout << " Inserisci l'elemento " <<j+1<< " : "; cin >> array[j]; } //numero e posizione numero_e_posizione(valore, array); }
Per evitare ciò, se ho capito bene, dovrei assegnare a dim il valore di n. Ma come posso farlo?
Ho risolto! E ho anche aggiustato un po' il codice.
Puoi verificare se è tutto giusto, per favore?
Puoi verificare se è tutto giusto, per favore?
/* programma che determina se un numero è presente in un vettore e che ne restituisce la posizione in caso affermativo */ #include <iostream> using namespace std; int numero_e_posizione(int numero, int array[], int dim) { cout << " Inserisci il numero : "; cin >> numero; for(int j=0; j<dim; j++) { if (numero == array[j]) { cout << " Il numero è presente nel vettore e si trova in posizione " << j <<endl; } } } int main () { int valore; int n; cout << "Inserire la dimensione del vettore : "; cin>>n; int array[n]; //inserimento di n elementi for (int j=0;j<n;j++) { cout << " Inserisci l'elemento " <<j+1<< " : "; cin >> array[j]; } //numero e posizione numero_e_posizione(valore, array, n); }