[c++] eliminare num che si ripetono+di una volta nel vettore

di il
4 risposte

[c++] eliminare num che si ripetono+di una volta nel vettore

Ciao a tutti e buon 2013!!
Ho un problema con il programma che deve eliminare i numeri che si ripetono più di una volta nel vettore.
Ho pensato a una soluzione del genere ma non ho capito perchè la funzione elimina_occorrenze non fa nulla.

#include<iostream>
#include<cstdlib>

using namespace std;

#define N 30
typedef int vettore [N];
vettore v;
void inserimento(vettore,int&);
void occorrenze(vettore,int&);
void elimina_occorrenze(vettore,int&,vettore,int&);

void inserimento(vettore v,int&num_elem){
     cout<<"\n quanti elementi vuoi inserire?";
     cin>>num_elem;
     int i;
     if(num_elem<=N){
                     for(i=0;i<num_elem;i++){
                                             cout<<"n\l'elemento numero" << i+1<< " e' ";
                                             cin>>v[i];}
              cout<<"\ il vettore v e' uguale a [";        
     for(i=0;i<num_elem;i++){
                             cout<<" "<<v[i];
                             }
     cout<<"]";                               
     }
     else cout<<"\n ERRORE!!";
     cout<<endl;
     }
     
  void occorrenze(vettore v,int&num_elem){
     int i,j,k;
     int trovato;
     int occorrenze;
     int nuovi_elem=0;
     
     for(i=0;i<num_elem;i++){
                             trovato=0;
         for(j=0;j<i && trovato==0;j++){                    
          if(v[j]==v[i]) trovato=1;                  
          }
          if(trovato==0){
                         occorrenze=0;
                         for(k=0;k<num_elem;k++){
                          if(v[k]==v[i]) occorrenze++; 
                                               }
          cout<<"\n il valore" << v[i] << "si ripete "<< occorrenze << "volte"<<endl;               
                                             if(occorrenze>1)
          cout<<"\n il valore"<<v[i]<<"va eliminato"<<endl;                      
                                                 
                                                 }
                                                 }
                         
                                                 }
                         
                         
                               
void elimina_occorrenze(vettore v,int&num_elem,vettore uscita,int&elem_uscita){
          int i;
          int occorrenze;
          int nuovi = 0;
          for (int i = 0; i < num_elem; i++) {
               if(occorrenze == 1){
                        uscita[nuovi] = v[i];
                        nuovi++;
                        cout<<nuovi<<endl;
                                   }
                                   }

    elem_uscita = nuovi;
}      
       
     
  int main(){
    vettore v;
    vettore uscita;
    int num_elem;
    int elem_uscita;
    int i;
    inserimento(v,num_elem);
    occorrenze(v,num_elem);
    elimina_occorrenze(v,num_elem,uscita,elem_uscita);
  cout << "Il nuovo vettore e': \n";
    for(i = 0; i < elem_uscita; i++) {
        cout << "  " << uscita[i] << "\n";
    }
    system("pause");
    }    

Mi aiutate a capire perchè?
Grazie

4 Risposte

Devi accedere o registrarti per scrivere nel forum
4 risposte