Ciao a tutti, volevo chiedervi una cosa che non riesco a fare in C++.
In pratica ho due array A e B. Vorrei scorrere il primo array in modo diverso dal secondo (diciamo più lentamente). Mi spiego meglio:
A = [2,11,6,5,9];
B = [2,3,4,11,7,5];
I passaggi vorrei che fossero così ,li scrivo a parole per farvi capire meglio:
1- Parto dall'elemento 2 dell'array A e controllo se ce ne sta uno uguale nell'array B. Quindi controllo il 2 (A) col 2 (B) lo trovo, incremento il contatore che punta alla posizione di A (quindi ora è al numero 11).
2- Faccio ritornare il contatore che punta all'elemento di B a 0 (primo elemento). Quindi con l'11 controllo: 11 è = 2? no! incrementa la posizione di B. 11 è = 3 ? no! incrementa la posizione B. 11 è = 4? no! incrementa la posizione di B. 11 è = 11? si. Incrementa la posizione di A. (vai al 3 elemento posizione 2 ossia al numero 6).
3- Ripeto i passaggi con tutti gli altri elementi.
In pratica prendo il primo elemento di A e lo confronto con tutti finchè non ne trovo uno uguale.Se ne trovo uno uguale li sottraggo quindi diventa 0 e lo metto nell'array A.
Ad esempio il 2(A) è = 2(B) si! A[k] = A[k] - B
==> A = {0,11,6,5,9}, lo faccio finche l'array A non diventa:
A = {0,0,6,0,9};
Ho scritto il codice ma è sbagliato mi restituisce solo il 2 e l'11. Nel codice provo a stampare solo gli elementi in comune.
Codice:
#include <iostream>
using namespace std;
int main()
{
int a[5] = {2,11,6,5,9};
int b[6] = {2,3,4,11,7,5};
int k = 0;
int i = 0;
while(k < 4)
{
while(i < 5)
{
if(a[k] == b[i])
{
cout << a[k] <<"\n";
k++;
i = 0;
}
else
{
i++;
}
}
}
return 0;
}