Elimina i duplicati di un array

di il
2 risposte

Elimina i duplicati di un array

Sto cercando di scrivere una funzione che dato un array mi restituisca un array che contenga gli stessi elementi senza i suoi duplicati
ecco qui il codice ma non ci riesco
lo faccio con gli array perchè con i vettori sarebbe troppo semplice e poi l'esercizio diceva di farlo con gli array

#include<iostream>
using namespace std;
void remove_duplicates(int [],int);
int main()
{
    const int da=9;
    int a[da]={1,4,9,16,9,7,4,9,11};

    remove_duplicates(a,da);

return 0;
}

void remove_duplicates(int x[],int dx)
{
    int c[dx];
    int dc=0;
    bool y[dx];
    for(int i=0;i<dx;i++)
    y[i]=false;

    for(int j=0;j<dx;j++)
    {
        if(y[j]==false)
        {
            c[dc]=x[j];
            dc++;
            y[j]=true;

        for(int s=0;s<dx;s++)
        {
            if(x[s]==x[j])
            x[s]=true;
        }
        }
    }

    for(int w=0;w<dc;w++)
    cout<<c[w]<<"  ";
}

2 Risposte

  • Re: Elimina i duplicati di un array

    Ciao.
    Per esercizio l'ho risolto come segue.
    Sembra funzionare ma non ho fatto molti test.

    /*********************************************************************************************/

    #include<iostream>

    using namespace std;

    void remove_duplicates(int [],int);
    bool doppione(int *, int, int);

    /**
    * main
    */
    int main() {

    const int da=9;
    int a[da]={1,4,9,16,9,7,4,9,11};

    remove_duplicates(a,da);

    return 0;
    }

    /**
    * remove_duplicates
    */
    void remove_duplicates(int x[],int dx) {

    int c[dx];
    int lunghezzaC = 0;

    // Legge array di input e costruisce array output senza doppioni
    for(int i=0; i<dx; i++) {

    // Verifica se l'elemento da trattare (x) non è doppione tra quelli già trattati (c)
    if (!doppione(c, lunghezzaC, x)) {
    //Se non è doppione copia nell'array di output l'elemento da trattare
    c[lunghezzaC++] = x;
    }
    }

    //Stampa nuovo array
    for(int i=0; i<lunghezzaC; i++) {
    cout << c << " ";
    }
    cout << endl;

    }


    /**
    * Verifica se item è presente in arr
    */
    bool doppione(int *arr, int lunghezzaArr, int item){

    for(int j=0; j<lunghezzaArr; j++) {
    if (arr[j] == item) {
    return true;
    }
    }
    return false;

    }
  • Re: Elimina i duplicati di un array

    Gli do un'occhiata e domani al massimo ti faccio sapere
Devi accedere o registrarti per scrivere nel forum
2 risposte