[C++] Elementi in comune array/stringhe

Messaggioda mpg » 24/02/2019, 16:03

Dovrei fare questo:
"//Letti in input due arrayAeB, rispettivamente di n elementi, stampa tutti gli elementi in comune"
In questo programma io li stampo se tutti diversi non riesco a capire come stamparli in comune...

Codice:
#include <iostream>
using namespace std;

int main() {
   // creo i vettori e li popolo
   int v1[3] = {1, 5, 7};
   int v2[3] = {5, 3, 2};
   int i = 0;

   // Ora li confronto:
   for(i=0; i<3; i++) {
      if (v1[i] != v2[i]) {   // se trovo delle differenze...

    cout << v1[i] << "   " << v2[i] << endl;   // ... le stampo!
      }
   }

   return 0;
}
mpg
Average Member
Average Member
 
Messaggio: 229 di 654
Iscritto il: 28/11/2017, 09:35

Re: [C++] Elementi in comune array/stringhe

Messaggioda apatriarca » 24/02/2019, 19:57

Se con elementi in comune intende semplicemente dire che v1[ i ] == v2[ i ], allora è sufficiente negare la tua condizione, cioè usare == al posto di !=.. Se invece intende dire valori in comune tra i due array, che quindi non si trovano agli stessi indici, allora il codice è più complicato (e lo è anche nel caso di elementi diversi).
apatriarca
Moderatore
Moderatore
 
Messaggio: 5198 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [C++] Elementi in comune array/stringhe

Messaggioda mpg » 24/02/2019, 20:18

apatriarca ha scritto:Se con elementi in comune intende semplicemente dire che v1[ i ] == v2[ i ], allora è sufficiente negare la tua condizione, cioè usare == al posto di !=.. Se invece intende dire valori in comune tra i due array, che quindi non si trovano agli stessi indici, allora il codice è più complicato (e lo è anche nel caso di elementi diversi).

Esatto trovare valori comuni tra due array.
mpg
Average Member
Average Member
 
Messaggio: 230 di 654
Iscritto il: 28/11/2017, 09:35

Re: [C++] Elementi in comune array/stringhe

Messaggioda mpg » 26/02/2019, 14:26

Ho fatto cosi' pero' ho notato se per caso due dei numeri sono 6 e 0 nel primo array e nel secondo array tra i 5 numeri c'è due volte 0 come risultato mi esce 6 0 0 , dovrebbe venirmi invece 6 e 0 come comuni non capisco come dovrei correggere...



Codice:
#include <iostream>
#include <cmath>
#include <ctime>
#include <cstdlib>

using namespace std;
int main(){

    int num1[5];
    int num2[5];
    srand(time(NULL));
    cout<<"array 1"<<endl;
    for (int i = 0; i <5; i++){
        num1[i] = rand() % 10;

        cout<<num1[i]<<endl;
    }
    cout<<"array 2"<<endl;
    for (int j = 0; j < 5; j++){
        num2[j] = rand() % 10;

        cout<<num2[j]<<endl;
    }

    cout<<"elementi comuni"<<endl;

    for (int i = 0; i <5; i++){
        for (int j = 0; j <5; j++){

                if (num1[i] == num2[j])
                    {
                cout<<" "<<num1[i];
                }
               
        }
    }
}
mpg
Average Member
Average Member
 
Messaggio: 231 di 654
Iscritto il: 28/11/2017, 09:35

Re: [C++] Elementi in comune array/stringhe

Messaggioda apatriarca » 02/03/2019, 21:10

Puoi inserire un break all'interno dell'if per uscire dal ciclo interno al primo valore trovato. Tuttavia rimane il problema inverso, cioè se hai un valore ripetuto nel primo array che compare solo una volta nel secondo. Credo che la soluzione più semplice sia quella di avere un array di bool di supporto che è inizializzato a false. Questo array serve per indicare che un elemento del secondo array è già stato "usato" e quindi deve essere ignorato.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5201 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite