Ho risolto così:
codice:
#define N 5
int main()
{
int pos,tmp,s,cont1,flag1,flag,i,j,v1[N],v2[N];
//Acquisizione dei due vettori
for(i=0;i<N;i++){
printf("Inserisci un elemento-->");
scanf("%d",&v1[i]);
}
for(i=0;i<N;i++){
printf("Inserisci un elemento-->");
scanf("%d",&v2[i]);
}
i=j=flag=flag1=s=0;
cont1=1;
//Ordinamento v1
for(i=0;i<N-1;i++){
tmp=v1[i];
pos=i;
for(j=i+1;j<N;j++){
if(v1[j]<tmp){
tmp=v1[j];
pos=j;
}
}
v1[pos]=v1[i];
v1[i]=tmp;
}
tmp=pos=0;
//Ordinamento v2
for(i=0;i<N-1;i++){
tmp=v2[i];
pos=i;
for(j=i+1;j<N;j++){
if(v2[j]<tmp){
tmp=v2[j];
pos=j;
}
}
v2[pos]=v2[i];
v2[i]=tmp;
}
//Confronto Vettori
for(i=0;i<N;i++){
if(v1[i]!=v2[i]){
flag=1;
}
}
//Stampa del risultato
if(flag==0){
printf("Vettori contenenti stessi elementi\n");
i=0;
while((i<N+1)){
if(v1[i]==v1[i+1]){
s=v1[i];
cont1++;
flag1=1;
}else{
if(flag1==1){
printf("Il numero %d occorre %d volte in entrambe i vettori\n", s, cont1);
flag1=0;
cont1=1;
}
}
i++;
}
}else{
printf("Vettori non contenenti stessi elementi");
}
return 0;
}
L'unico problema è che ad esempio:
v1=[2,2,3,3,3]
mi stampa solo che il 2 occorre 2 volte e dovrebbe stamparmi anche che il 3occorre 3 volte.
Invece se assegno:
v1=[3,3,4,4,4]
mi stampa correttamente sia il 3 sia il 4, dov'è l'errore?