PDA

View Full Version : [C] numeri pari in pos pari e dispari in pos dispari


milan92
17-06-2013, 15:40
Ciao a tutti!devo costruire in C un array di 10 elementi che do in input che però accetti solo numeri pari in posizione pari e numeri dispari in posizione dispari..io ho provato ma non riesco:
# include <stdlib.h>
# include <stdio.h>
int main()
{int a[10],pai,dispari,i;
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
if(a[i]%2!=0)
scanf("%d",&a[i]);
else
scanf("%d",&a[i+1]);

}

for (i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
system("pause");
return 0;
}

GRAZIE a chi mi pò dare una mano!
Fabio

lorenzo001
17-06-2013, 16:44
Devi usare una sola scanf sull'elemento attuale (a[i]) e controllare se è pari o dispari in accordo con l'indice i

Se va bene passi al prossimo elemento nella for, altrimenti ripeti la scanf

In poche parole la scanf va all'interno di un ciclo while, dentro la for ...

ingframin
18-06-2013, 07:40
Ricorda inoltre che gli array sono puntatori gia' di per se, non c'e' bisogno di scrivere &a[i] ma solo a[i].

ingframin
18-06-2013, 10:24
...ehm, no. E' necessario che scriva &a[i] per accedere all'indirizzo di a[i]. a è un puntatore alla testa dell'array, quindi al massimo l'alternativa è usare l'aritmetica dei puntatori dove &a[i] equivale ad a+i

Hai ragione, chiedo scusa per la svista... :muro:

Spe!
18-06-2013, 21:04
D'accordo con la soluzione proposta da Lorenzo ti propongo una possibile modifica al codice.


# include <stdlib.h>
# include <stdio.h>
int main()
{int a[10],i = 0;
for(i=0;i<=9;i++)
{
do{
scanf("%d", &a[i]);
} while ((i%2 == 0 && a[i]%2 !=0) || (i%2 != 0 && a[i]%2 ==0))
}

for (i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
system("pause");
return 0;
}

milan92
20-06-2013, 09:16
grazie mille!cosi funziona!:)