Eliminare Duplicati array

di il
1 risposte

Eliminare Duplicati array

Salve a tutti...ho quest esercizio:
Scrivere un programma C++ che, letta da input una sequenza di numeri terminata da -1 e che può
contenere al massimo 100 elementi, la memorizzi opportunamente in un array, individui tutti gli interi che
compaiono più di una volta e cancelli tutti i duplicati (lasciando cioè solo la prima occorrenza di ogni
numero); l’array dove essere inoltre compattato, ossia devono essere eliminati i “buchi” che si creano dopo
le cancellazioni, spostando a sinistra i valori rimanenti. Stampare poi su standard ouptut l’array così
modificato.
.....
Ho scritto questo ma nn mi funziona quando tra due occorrenze ci sono altri numeri....

#include <iostream>

using namespace std;
const int dim=100;

int main()
{
int V[100];
int W[100];
int n;
int cont=0;
while(n!= -1)
{
cin>>n;
V[cont]=n;
cont++;
}
for(int i=0;i<cont-1;i++)
if(V==V[i+1])
V=0;
for(int x=0;x<cont-1;x++)
cout<<V[x];

return 0;
}

1 Risposte

  • Re: Eliminare Duplicati array

    Ciao io ho trovato più o meno una soluzione . L'output richiesto viene rispettato il problema però sta nel fatto che non viene rispettata la traccia al 100%. in pratica io ho risolto il problema non memorizzando nell'array l'intera sequenza inserita da input bensì solo gli interi non inseriti precedentemente. Vedi tu se può andar bene!!!

    #include <iostream>
    using namespace std;

    const int dim=100;

    bool presente(int [],int,int);

    int main() {

    int n,i,A[dim];
    i=0;
    cout<<"inserisci il primo numero della sequenza"<<endl;
    cin>>n;

    while(n!=-1 && i<=100)
    {if(!presente(A,n,i))
    {A=n;
    i++;
    }
    cin>>n;
    }
    cout<<"la sequenza senza duplicati è"<<endl;
    for(int j=0;j<i;j++)
    cout<<A[j]<<" ";

    return 0;
    }

    //FUNZIONE PRESENTE: ritorna true se l'elemento inserito è gia presente, false se non lo è
    bool presente(int A[],int n,int i)
    {for(int r=0;r<i;r++)
    if(A[r]==n)
    return true;
    return false;}
Devi accedere o registrarti per scrivere nel forum
1 risposte