[c++] esercizio sui vettori

vivians
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..
#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
claudio862
Sorvolando su indentazione, spaziatura e uso delle variabili, il problema è l'istruzione

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";
    }
}

vivians
grazie mille :)

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