Premetto che non sono molto esperto;
secondo me il problema è semplice: con
if( a[i] == a[j]) {
flag=1;
}
confronti ognin volta l stesso valore con se stesso (se ad esempio i=2, quando nel ciclo j diventerà 2 avrai if( a[2] == a[2]) {flag=1;}, il risultato sarà per forza flag=1), flag per questo è sempre 1 il valore non viene mai passato a b[].
Inoltre devi specificare all'inizio del ciclo iniziale che flag=0, oppure appena diventerà 1 lo resterà per tutti i cicli successivi e qualunque sia il risultato del paragone flag sarà sempre 1.
Ecco come scriverei io il codice:
Spero di esserti stato d'aiuto!codice:#include <cstdlib> #include <stdio.h> int main() { int a[6]= { 1,3,2,3,1,5 }; int b[6]; int i,j,k,x; int flag=0; for(k=0; k<6; k++) { // azzero il vettore B b[k]=0; } for(i=1; i<6; i++) { //Confronto ogni elemento con il resto dell'array flag=0;//ogni volta devi riportare flag a 0 for(j=0; j<6; j++) { if (i!=j){ if( a[i] == a[j]) { flag=1; } } } if(flag == 0) { b[i]=a[i]; } } printf("%d " , b[0]);//eviti la virgola finale for(x=1; x<6; x++){ //stampo a video l'array ottenuto printf(",%d " , b[x]); } return 0; }
Fammi sapere!


Rispondi quotando