[c++] esercizio sui vettori
ciao a tutti!!
ho un probelema con questo programma..
dato un vettore di interi con un'apposita funzione devo calcolare il vettore di uscita costituito dai soli elementi pari..
il problema ce l'ho quando compilo e mi stampa il vettore di uscita..vi posto quello che ho fatto..
se ad esempio inserisco i numeri: 4 5 6 7
mi dice
il nuovo vettore è:4
il nuovo vettore è:6
il nuovo vettore è:0
il nuovo vettore è:0
il nuovo vettore è:0
e ripete più volte il nuovo vettore è:0..
non ne capisco il motivo..
mi potete aiutare?grazie mille!!
ho un probelema con questo programma..
dato un vettore di interi con un'apposita funzione devo calcolare il vettore di uscita costituito dai soli elementi pari..
il problema ce l'ho quando compilo e mi stampa il vettore di uscita..vi posto quello che ho fatto..
#include<iostream> #include<cstdlib> #include<cmath> using namespace std; #define N 10 typedef int array[N]; array v_in; array v_out; void input(int&, array); void pari(array,int&,array,int&); void input (int&num_elem, array v_in){ cout<<"\n quanti elementi vuoi inserire? "; cin>>num_elem; int i; for(i=0;i<num_elem;i++){ cout<<"\n l'elemento numero"<< i+1 << " e' "; cin>>v_in[i]; } } void pari( array v_in,int&num_elem,array v_out,int&elem_vout){ int i; int pari=0; for(i=0;i<num_elem;i++){ if(v_in[i]%2==0){ v_out[pari]=v_in[i]; pari++; } } pari=elem_vout; for(i=0;i<elem_vout;i++) cout<<"\n il nuovo vettore e': " << v_out[i]; } int main(){ int num_elem; int elem_vout; input(num_elem, v_in); pari(v_in,num_elem,v_out,elem_vout); system("pause"); }
se ad esempio inserisco i numeri: 4 5 6 7
mi dice
il nuovo vettore è:4
il nuovo vettore è:6
il nuovo vettore è:0
il nuovo vettore è:0
il nuovo vettore è:0
e ripete più volte il nuovo vettore è:0..
non ne capisco il motivo..
mi potete aiutare?grazie mille!!
Risposte
Sorvolando su indentazione, spaziatura e uso delle variabili, il problema è l'istruzione
Assegni il valore di "elem_vout" a "pari", mentre devi fare il contrario (oppure eliminare "pari" e usare direttamente "elem_vout").
Altre correzioni meno importanti:
pari = elem_vout;
Assegni il valore di "elem_vout" a "pari", mentre devi fare il contrario (oppure eliminare "pari" e usare direttamente "elem_vout").
Altre correzioni meno importanti:
#include <iostream> #include <cstdlib> #include <cmath> using namespace std; #define N 10 typedef int array[N]; void input(int&, array); void pari(array, int&, array, int&); void input (int& num_elem, array v_in) { cout << "Quanti elementi vuoi inserire? "; cin >> num_elem; for(int i = 0; i < num_elem; i++) { cout << "Inserisci l'elemento numero " << i+1 << ": "; cin >> v_in[i]; } } void pari(array v_in, int& num_elem, array v_out, int& elem_vout) { int pari = 0; for (int i = 0; i < num_elem; i++) { if(v_in[i] % 2 == 0){ v_out[pari] = v_in[i]; pari++; } } elem_vout = pari; } int main() { array v_in; array v_out; int num_elem; int elem_vout; input(num_elem, v_in); pari(v_in, num_elem, v_out, elem_vout); cout << "Il nuovo vettore e': \n"; for(int i = 0; i < elem_vout; i++) { cout << " " << v_out[i] << "\n"; } }
grazie mille
