Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fafafa01 en 9 Enero 2017, 21:19 pm



Título: Problema con el operador de modulo(%) en C
Publicado por: fafafa01 en 9 Enero 2017, 21:19 pm
Buenas escribo el siguiente codigo en c:

Código
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4. int c,i;
  5. for(i=0;i<=8;i++)
  6. printf("el modulo entre %d y 8 es: %d\n",i,i%8);
  7. return 0;
  8. }
  9.  

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


Título: Re: Problema con el operador de modulo(%) en C
Publicado por: MAFUS en 9 Enero 2017, 21:39 pm
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


Título: Re: Problema con el operador de modulo(%) en C
Publicado por: fafafa01 en 9 Enero 2017, 21:46 pm
3/8=0,375 por lo tanto 4%8 debe ser 3
4/8=0,5 por lo tanto 4%8 debe ser 5


Título: Re: Problema con el operador de modulo(%) en C
Publicado por: MAFUS en 9 Enero 2017, 21:58 pm
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.


Título: Re: Problema con el operador de modulo(%) en C
Publicado por: fafafa01 en 9 Enero 2017, 22:00 pm
gracias!!!