python34 ha scritto:
Ciao, ti rispondo subito
Allora per verificare se un numero sia pari o dispari basta procedere come segue;
if( num % 2==0 )
contapari++;
else
contadispari++;
Dove num è una variabile (che devi dichiarare) che rappresenta il numero mentre contapari e contadispari due contatori.
Questa parte verifica se il resto della divisione è 0 (quindi il numero è pari) oppure no (quindi dispari)
Riesci a continuare poi?
È possibile anche controllare l'ultimo bit di num per verificare se è pari o dispari. Usando l'operatore di bitwise & si può prelevare l'ultimo bit con
num & 1
infatti provando a convertire una manciata di numeri pari e dispari in binario si nota facilmente che i primi hanno come bit meno significato lo zero e i secondi l'uno. Per esempio, volendo verificare se 15 è pari o dispari si può fare l'AND tra 15 e 1 come segue
1111 AND
0001 =
------------
0001
Valutando l'ultimo bit del risultato si può concludere che 15 è dispari. Per una rapida e superficiale introduzione all'algebra di Boole si può vedere il link seguente: .
Approfittando di quanto detto sopra si possono contare i numeri dispari così
dispari = dispari + (num & 1)
dal momento che NUM & 1 restituisce 1 quando num è dispari, 0 quando è pari.
In seguito è possibile ottenere il conteggio dei numeri pari facendo NUMERI_LETTI - dispari.
PS: la precedente versione del presente post non voleva essere una dimostrazione di sapere fare, ma una "spiegazione" per una soluzione alternativa. Le mie conoscenze in materia sono estramamente limitate e mi scuso se sono apparso arrogante. Per correttezza ho fornito una breve spiegazione di quanto scritto in precedenza, così da permettere OP, se vorrà, di vedere un altro modo di svolgere l'esercizio. Nella mia minuscola esperienza ho imparato molto dai suggerimenti altrui, soprattutto se contenevano nozioni da me non ancora affrontate(sono autodidatta).