Gli elementi del vettore a[N] vengono inseriti nel vettore c[N] solo quando la condizione è false, infatti:
if(j==N-1 && !condizione)
significa che l' istruzione if verrà eseguita solo se j==N-1 e la condizione risulta essere false (!condizione).
Per quanto riguarda l' altra domanda, gli elementi del vettore a[N] per gli indici da 5 a N-1 e del vettore b[N] per gli indici da 6 a N-1 sono tutti nulli.
Infatti quando inizializzi gli array nel seguente modo:
int a[N]={2,11,6,5,9};
int b[N]={2,3,4,11,7,5};
automaticamente inizializzi a zero tutti gli elementi degli indici che non sono stati inseriti.
Puoi verificare facilmente ciò compilando il programma seguente che è identico a quello dell' esercizio ma dove ho aggiunto nel main:
int i;
cout<<"Il vettore a[N] contiene gli elementi:\n";
for(i=0; i<20; i++)
cout<<a[i]<< ",";
cout<< "\n";
cout<< "\n";
cout<<"Il vettore b[N] contiene gli elementi:\n";
for(i=0; i<20; i++)
cout<<b[i]<< ",";
cout<< "\n";
cout<< "\n";
che mi permettono di vedere il contenuto di tutti e 20 gli elementi dei vettori a[N] e b[N].
Il programma è il seguente:
#include<iostream>
using namespace std;
const int N=20;
void funzione(int [], int []);
int main()
{
int a[N]={2,11,6,5,9};
int b[N]={2,3,4,11,7,5};
int i;
cout<<"Il vettore a[N] contiene gli elementi:\n";
for(i=0; i<20; i++)
cout<<a[i]<< ",";
cout<< "\n";
cout<< "\n";
cout<<"Il vettore b[N] contiene gli elementi:\n";
for(i=0; i<20; i++)
cout<<b[i]<< ",";
cout<< "\n";
cout<< "\n";
funzione(a,b);
cin.get();
return 0;
}
void funzione(int x[N],int y[N])
{
int i,j;
int c[N];
int dc=0;
bool condizione=false;
for(i=0; i<N && !condizione; i++)
{
for(j=0; j<N && !condizione; j++)
{
if(x[i]==y[j] && !condizione)
condizione=true;
if(j==N-1 && !condizione)
{
c[dc]=x[i];
dc++;
}
}
condizione=false;
}
cout<<"Gli elementi che vanno nell'array c[N] sono:\n";
for(int k=0; k<dc; k++)
cout<<c[k]<<" ";
return;
}