Grazie mille che mi avete risposto... ho circa risolto... ho voluto fare un ciclo perchè gli altri conisgli che mi avete dato con li ho capiti...ma ho riscontrato un problema...
Vi mostro:
codice:
int main() {
int A[17];
int i,j;
int sino = 0;
srand(time(0));
for(i=0;i<=17;i++) {
A[i] = rand() % 17 + 1;
for (j=0;j<=i;j++) {
getch();
if (A[i] == A[j]) {
break;
}
else if(j==i) {
sino = 1;
}
else{
continue;
}
}
if(sino == 1) {
funzione(A[i]);
sino= 0;
}
else {
i--;
}
}
getch();
return 0;
}
Vi spiego... Ho fatto un ciclo con la variabile j per controllare se quel numero era già presente... se c'è già A[i] == A[j] Allora ferma il ciclo e riprova con un'altro numero.
Se j=i quindi il controllo è giunto alla fine e non ha trovato nessuna corrispondenza allora sino = 1 e quindi dopo andiamo a stampare il numero altrimenti se A[j] != A[i] riprova con un altro valore di j.... il problema è che non mi fa vedere niente a video D: ... dove sbaglio? D:
Ho provato quindi anche a mettere dei printf con un getch() per capire cosa fa il prgramma... potete guardare anche voi con succede ... il programma entra sempre nel primo caso del for...
codice:
int main() {
int A[17];
int i,j;
int sino = 0;
srand(time(0));
for(i=0;i<=17;i++) {
A[i] = rand() % 17 + 1;
printf("A[i] = %d\n", A[i]);
for (j=0;j<=i;j++) {
printf("j= %d\n", j);
getch();
if (A[i] == A[j]) {
printf("A[i](%d) == A[j](%d)\n", A[i],A[j]);
break;
}
else if(j==i) {
printf("j==i\n");
sino = 1;
}
else{
printf("Altro\n");
continue;
}
}
if(sino == 1) {
funzione(A[i]);
sino= 0;
}
else {
i--;
}
}
getch();
return 0;
}