c++: elimina duplicati

Stato
Chiusa ad ulteriori risposte.

ylenia987654321

Nuovo Utente
5 Mag 2020
2
1
3
ciao ragazzi, ho un problema con un esercizio di c++
comando: inserire nel vettore B i valori del vettore A senza duplicati (nel caso ci fossero inserire il valore solo una volta). non è possibile usare altri vettori oltre ad A e B
ho provato a farlo ma esce soltanto il duplicato ad esempio se inserisco 1,2,1,3,4 viene fuori solo il valore 1 e non 1, 2,3,4.
vi allego il codice che ho fatto
C++:
#include <iostream>
#define DIM 5
using namespace std;
int main()
{
    int a[DIM], b[DIM], i, j, cont, k;
    for (i = 0; i < DIM; i++)
    {
        cin >> a[i];
    }
    k = 0;
    for (i = 0; i < DIM; i++)
    {
        cont = 0;
        for (j = i+1; j < DIM; j++)
        {
            if (a[i] == a[j])
            {

                cont++;
            }
        }
        if (cont > 0)
        {
            b[k] = a[i];
            k++;
        }
    }
    return 0;
}
 
  • Like
Reactions: NoNameoN

NoNameoN

Nuovo Utente
3 Giu 2020
2
0
1
ciao ragazzi, ho un problema con un esercizio di c++
comando: inserire nel vettore B i valori del vettore A senza duplicati (nel caso ci fossero inserire il valore solo una volta). non è possibile usare altri vettori oltre ad A e B
ho provato a farlo ma esce soltanto il duplicato ad esempio se inserisco 1,2,1,3,4 viene fuori solo il valore 1 e non 1, 2,3,4.
vi allego il codice che ho fatto
C++:
#include <iostream>
#define DIM 5
using namespace std;
int main()
{
    int a[DIM], b[DIM], i, j, cont, k;
    for (i = 0; i < DIM; i++)
    {
        cin >> a[i];
    }
    k = 0;
    for (i = 0; i < DIM; i++)
    {
        cont = 0;
        for (j = i+1; j < DIM; j++)
        {
            if (a[i] == a[j])
            {

                cont++;
            }
        }
        if (cont > 0)
        {
            b[k] = a[i];
            k++;
        }
    }
    return 0;
}
Guarda personalmente abbiamo due metodi implementati molto diversi quindi ho preferito rifare l'esercizio, ma comunque avendo commentato tutto credo sia intuibile... Se qualcosa on è chiara commenta pure altrimenti lascia un like :D


C++:
#include <iostream>
#define DIM 20
using namespace std;
int main()
{
    int a[DIM], b[DIM], cont, k = 0;
    for (int i = 0; i < DIM; i++)
        cin >> a[i];
    
    bool flag;
    for (int i = 0; i < DIM; i++){
        flag = false; //Ad ogni operazione devi settare la flag
        for (int j = 0; j < k; j++) //Controlli con l'array b in modo da inserire almeno una volta tutti gli elementi
            if(i != j) //Ti assicuri che non stai controllando la stessa cosa
                if (a[i] == b[j]){
                    flag = true; //Se flag diventa true vuol dire che ha trovato almeno due numeri uguali
                    break; //Quindi è inutile proseguire nel for
                }
        if (!flag){ //Se il numero nella posizione i-esima non è mai ripetuto, allora lo aggiungi
            b[k] = a[i];
            k++;
        }
    }
    
    for(int i = 0; i < k; i++)
        cout << b[i] << " ";
    return 0;
}
 
Stato
Chiusa ad ulteriori risposte.