Contador de Digitos Numeros Pares

Iniciado por Seeven, 20 Septiembre 2014, 00:27 AM

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

Seeven

Buenas, soy nuevo en programación mi consulta es la siguiente, encontre este codigo, lo que hace es contar los digitos ingresados pero solo los digitos pares mas no los impares, y lo que quisiera saber es como funciona el programa, que me lo explicaran sobretodo la parte donde se pone el modulo. Gracias.

#include <iostream>
using namespace std;
int main () {
   int a,b,c;
   cout <<"Numero : " ;cin >> a;
   c = 0;
   while (a > 0){
      b = a % 10;
      if (b % 2 == 0){
         c++;}
      a /= 10;
   }
   cout <<"Digitos Pares: "<<c;
   return 0;
}

T. Collins

#1
#include <iostream>
using namespace std;
int main () {
  int a,b,c;
  cout <<"Numero : " ;cin >> a;
  c = 0;
  while (a > 0){
     b = a % 10;
     if (b % 2 == 0){
        c++;}
     a /= 10;
  }
  cout <<"Digitos Pares: "<<c;
  return 0;
}


El módulo (%) funciona así: 7%3 = 1 , 8%4 = 0    se divide el primer numero entre el segundo y el resultado es el resto de la división. 7-3=4 -> 4-3=1, 8-4=4 -> 4-4=0

El programa que has puesto va dividiendo a entre 10 mientras a>0 para cojer cifra por cifra:
a=45
b = 45 % 10 = 5

if (b % 2 == 0)  ->  5 % 2 = 1 entonces no es número par, por lo tanto c (el contador de pares) no se incrementa.

a /= 10 -> a = a /10 -> a = 45 / 10 -> a = 4 (solo se coge la parte entera)
b = 4 % 10 = 4

if (b % 2 == 0)  ->  4 % 2 = 0 entonces sí es número par, por lo tanto c (el contador de pares) sí incrementa.

a /= 10 -> a = a /10 -> a = 4 / 10 -> a = 0

como a es 0 se sale el bucle

ivancea96

#2
Aunque vaya, bastaría con poner "if(a%2==0)", 'b' sobra.