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.
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;
}
Sorge questo problema (tenendo presente che in questo caso N=2):
-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
codice:
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;
}
con questo
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;
}
ma non è cambiato nulla, l'errore rimane lo stesso.
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!