Ciao a tutti! Sto cercando di scrivere un programmino che riceva in input un array, lo stampi a video, riconosca se ci sono elementi uguali nell'array e comunichi se questo avviene o meno.
Sorge questo problema (tenendo presente che in questo caso N=2):codice:#include<stdio.h> #define N 2 int main () { int ar[N*N]; int i, j; int flag; for(i=0; i<=(N*N)-1; i++){ printf("\nInserire un numero intero (%d interi restanti): ", (N*N)-i); scanf("%d", &ar[i]); } printf("\n"); for(i=0; i<=(N*N)-1; i++) printf("%d ", ar[i]); printf("\n"); for(i=0; i<=(N*N)-1; i++) { for(j=i++; j<=(N*N)-1; j++) if(ar[i]==ar[j]) flag=1; if(ar[i]!=ar[j]) flag=0; } if(flag==1) printf("\nCi sono elementi ripetuti!\n"); if(flag==0) printf("\nNon ci sono elementi ripetuti!\n"); return 0; }
-se inserisco interi tutti diversi, il programma mi riconosce giustamente che non ci sono elementi ripetuti;
-se inserisco un massimo di 2 interi uguali sul totale di 4, mi riconosce giustamente che ci sono elementi ripetuti;
-se inserisco 3 o più interi uguali, mi comunica che non ci sono elementi ripetuti!!
Ho provato anche a sostituire questo pezzo di codice
con questocodice:for(i=0; i<=(N*N)-1; i++) { for(j=i++; j<=(N*N)-1; j++) if(ar[i]==ar[j]) flag=1; if(ar[i]!=ar[j]) flag=0; }
ma non è cambiato nulla, l'errore rimane lo stesso.codice:for(i=0; i<=(N*N)-1; i++) { for(j=0; j<=(N*N)-1; j++) if(ar[i]==ar[j] && i!=j) flag=1; if(ar[i]!=ar[j] && i!=j) flag=0; }
Mi sono incartata qui e non riesco a risolvere il problema!! e sì che credevo fosse un programmino semplice....![]()
Vi ringrazio in caso abbiate tempo/voglia di darmi una mano!

Rispondi quotando