Ragazzi ho provato a fare questo esercizio:
Sviluppare un programma che acquisisca da tastiera due arraycontenenti 10 numeri interi (int num1[10], int num2[10]),assicurandosi (per ogni array) che l’utente non inserisca un numero già inserito (in questo caso, ripetere l’acquisizionedi ogni elemento che sia già stato inserito).Si trovino quindi tutti gli elementi comuni ad entrambi gli array e si stampi un messaggio indicante, per ogni elemento comune,l’indice occupato nel primo array e nel secondo.
il programma che ho scritto funziona, ma mi sembra troppo lungo e macchinoso:
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{int V[10];
int B[10];
int i,j,g;
i=1;bool uguale=true;
cout<<"inserire gli interi per il vettore V"<<endl;
cin>>V[0];
while (i<10)
{cin>> V[i];
for (j=0; j<i; j++)
{if (V[j]==V[i])
{uguale=false;};}
if(uguale==false)
{while(uguale==false)
{cout<<" numero non valido. inserire un altro numero"<<endl;
cin>>g;
V[i]=g;
for (j=0; j<i; j++)
{if (V[j]==V[i])
{uguale=false;}
else {uguale=true;};};};}
i++;
uguale=true;
g=0;}
cout<<"vettore v"<<endl;
for (i=0; i<10; i++)
{cout<<V[i]<<" ";}
cout<<endl;i=1;
uguale=true;
cout<<"inserire gli interi per il vettore B"<<endl;
cin>>B[0];
while (i<10)
{cin>> B[i];
for (j=0; j<i; j++)
{if (B[j]==B[i])
{uguale=false;};}
if(uguale==false)
{while(uguale==false)
{cout<<" numero non valido. inserire un altro numero"<<endl;
cin>>g;
B[i]=g;
for (j=0; j<i; j++)
{if (B[j]==B[i])
{uguale=false;}
else {uguale=true;};};};}
i++;
uguale=true;
g=0;}
cout<<"vettore b"<<endl;
for (i=0; i<10; i++)
{cout<<B[i]<<" ";}
cout<<endl;
int f;
bool conta=false;
for (i=0; i<10; i++)
{j=0;
conta=false;
while(conta==false&&j<10)
{if (V[i]==B[j])
{conta=true;f=j;}
else{j++;};}
if (conta=true)
{cout<<"il numero "<<V[i]<<" si trova nel vettore V in posizione "<<i<<" e nel vettore b in posizione "<<f<<endl};}
return 0;}
va bene così o si può snellire?