Problema con el operador de modulo(%) en C

Iniciado por fafafa01, 9 Enero 2017, 21:19 PM

0 Miembros y 1 Visitante están viendo este tema.

fafafa01

Buenas escribo el siguiente codigo en c:


#include <stdio.h>
int main(void)
{
int c,i;
for(i=0;i<=8;i++)
printf("el modulo entre %d y 8 es: %d\n",i,i%8);
return 0;
}


y lo que me sale es esto:

el modulo entre 0 y 8 es: 0
el modulo entre 1 y 8 es: 1
el modulo entre 2 y 8 es: 2
el modulo entre 3 y 8 es: 3
el modulo entre 4 y 8 es: 4
el modulo entre 5 y 8 es: 5
el modulo entre 6 y 8 es: 6
el modulo entre 7 y 8 es: 7
el modulo entre 8 y 8 es: 0

pero creo que tendría que ser esto:
el modulo entre 0 y 8 es: 0
el modulo entre 1 y 8 es: 1
el modulo entre 2 y 8 es: 2
el modulo entre 3 y 8 es: 3
el modulo entre 4 y 8 es: 5
el modulo entre 5 y 8 es: 6
el modulo entre 6 y 8 es: 7
el modulo entre 7 y 8 es: 8
el modulo entre 8 y 8 es: 0

que seria el primer numero después de la coma

MAFUS

#1
No entiendo la lógica con que haces la cuenta. De todas formas te falta el 4.

Recuerda:
Dividendo = divisor * cociente + resto.

Mientras dividendo sea menor que el divisor el cociente es 0 y el resto, por tanto, debe ser igual al dividendo:

7 = 0 * 8 + 7

fafafa01

3/8=0,375 por lo tanto 4%8 debe ser 3
4/8=0,5 por lo tanto 4%8 debe ser 5

MAFUS

#3
Confundes el resto con el cociente.

Lo verás por pasos:
1. Cociente 4 / 8 = 0     |     Resto: 4 - (8 * 0) = 4
2. Como sigue quedando resto continuo operando. Como ya voy a ir más allá de las unidades pongo la coma decimal: Cociente = 0,
3. Como voy a calcular el número una posición a la derecha de la coma decimal tendré que hacer el resto que me quedó 10 veces más grande, porqué estoy en base 10, (resto * 10 = 4 * 10 = 40) y opero:
4. Operación 40 / 8 = 5     |     Resto: 40 - (8 * 5) = 0
5. Incluyo el resultado de Operación al que ya tenía de Cociente. Cociente = 0,5
6. El resto calculado es 0. He terminado la operación de división.