Salve programmatori, sto imparando il linguaggio in c attraverso una serie di programmi svolti in maniera graduale. ora sono arrivata ai cicli (while, for.. ) e mi sono ritrovata davanti questo esercizio:
Si scriva un programma C che:
a. legga 2 vettori di N elementi interi (con N costante predefinita)
b. stabilisca se i due vettori contengono gli stessi elementi, anche
disposti in ordine differente
io l'ho svolto in questo modo:
#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
int v1[N], v2[N];
int i=0, j=0,somma=0;
printf("inserire il primo vettore: \n");
for(i=0;i<N;i++){
scanf("%d",&v1[i]);
}
printf("inserire il secondo vettore:\n");
for(j=0;j<N;j++){
scanf("%d",&v2[j]);
}
for(i=0;i<N;i++){
for(j=0;j<N;j++){
if(v1[i]!=v2[j]){
j++;
}
else if(v1[i]==v2[j]){
somma=somma+1;}
else
somma=somma-1;
}
i++;
}
if(somma==N){
printf("i vettori sono uguali");
}
else{
printf("i vettori sono diversi");
}
return 0;
}
ed ho ragionato in questo modo..
all'inizio mi apro i due cicli for così mi permette di salvare i vari valori all'interno del vettore.. successivamente apro il ciglo for per il puntatore i e subito il ciclo for per la j così che se v1
è diverso dal valore v2[j] allora aumentava la j in modo tale da trovare un corrispondente ...
se il corrispondente c'era allora la conta mi aumentava di 1... così che alla fine se la conta era uguale a N valori nel vettore allora i vettori erano uguali... ma questo ragionamento non funziona ç_ç perchè ?