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