Ciao a tutti, in questa parte di codice dove si devono semplicemente riempire degli array, ci sono problemi con la validazione stretta, nel senso che se dentro un insieme inserisco una lettera(dovrebbe accettare solo numeri reali) mi va in loop e non capisco perchè:
insieme_t ins1, /* variabili per rappresentare i due insiemi */
ins2;
int i, /*variabile per un ciclo for*/
ins,
j; /*variabile per esito prima funzione*/
double esito_lettura; /*variabile per la validazione stretta*/
do /*validazione stertta e acquisizione del */
{ /*numero di elementi del primo insieme */
printf("Digitare il numero di elementi del primo insieme (>0) e premere invio:");
esito_lettura=scanf("%d",
&ins1.dim);
if (ins1.dim <= 0)
{
printf("Input non accettabile!\n");
while (getchar() != '\n');
}
}
while (ins1.dim <= 0||esito_lettura!=1);
ins1.arr = (double *) calloc( ins1.dim, sizeof(double)); /* allocazione di memoria in base al n° di elementi*/
for (ins1.ind = 0; (ins1.ind) < (ins1.dim); ins1.ind ++) /* ciclo for per inserire gli elementi */
{ /* del primo insieme nell'array */
do
{
printf("Digitare l'elemento numero %d del primo insieme:",
ins1.ind+1);
esito_lettura=scanf ("%lf",
&ins1.arr[ins1.ind]);
j=0;
for( i = 0; i < ins1.ind; i++)
{
if(ins1.arr[ins1.ind] == ins1.arr[i]||esito_lettura!=1)
{
printf("Input non accettabile\n");
while (getchar() != '\n');
j=1;
}
}
}
while (j==1||esito_lettura!=1);
}
ins1.ind=0;
do /*validazione stertta e acquisizione del */
{ /*numero di elementi del secondo insieme */
printf("Digitare il numero di elementi del secondo insieme (>0) e premere invio:");
esito_lettura=scanf("%d",
&ins2.dim);
if (ins2.dim <= 0||esito_lettura!=1)
{
printf("Input non accettabile!\n");
while (getchar() != '\n');
}
}
while (ins2.dim <= 0||esito_lettura!=1);
ins2.arr = (double *) calloc( ins2.dim, sizeof(double)); /* allocazione di memoria in base al n° di elementi*/
for (ins2.ind = 0; ( ins2.ind) < (ins2.dim); ins2.ind ++) /* ciclo for per inserire gli elementi */
{ /* del secondo insieme nell'array */
do
{
printf("Digitare l'elemento numero %d del secondo insieme:",
ins2.ind+1);
esito_lettura=scanf ("%lf",
&ins2.arr[ins2.ind]);
j=0;
for( i = 0; i < ins2.ind; i++)
{
if(ins2.arr[ins2.ind] == ins2.arr[i])
{
printf("Input non accettabile \n");
while (getchar() != '\n');
j=1;
}
}
}
while (j==1||esito_lettura!=1);
}
Grazie in anticipo