elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] Contador de dígitos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Contador de dígitos  (Leído 2,596 veces)
GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
[C] Contador de dígitos
« en: 17 Septiembre 2015, 05:31 am »

Buenas!

Código
  1. #include <stdio.h>
  2.  
  3.  
  4. int main() {
  5.  int c, i;
  6.  
  7.  int ndigit[10];
  8.  
  9.  for (i = 0; i < 10; i = i + 1) {
  10.    ndigit[i] = 0;
  11.  }
  12.  
  13.  while ((c = getchar()) != EOF) {
  14.  
  15.    if ( c >= '0' && c <= '9') {
  16.      ++ndigit[c - '0'];
  17.    }
  18.  
  19.  }
  20.  
  21.  //Muestra OMIT
  22.  for (i = 0; i < 10; i = i + 1) {
  23.    printf("%d -> %d\n", i, ndigit[i]);
  24.  }
  25. }

No entiendo esta línea ++ndigit[c - '0']; si le sacás el '0' no funciona.

¿Por qué, para qué sirve eso?

Saludos


En línea

LET'S DO STUFF!!
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [C] Contador de dígitos
« Respuesta #1 en: 17 Septiembre 2015, 05:32 am »

esto es un aporte, una duda o que?

al código le falta el return del final


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: [C] Contador de dígitos
« Respuesta #2 en: 17 Septiembre 2015, 05:33 am »

Ahí lo acabo de editar ya puse mi duda, perdón!
En línea

LET'S DO STUFF!!
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [C] Contador de dígitos
« Respuesta #3 en: 17 Septiembre 2015, 05:41 am »

Código
  1. if ( c >= '0' && c <= '9') {
  2.      ++ndigit[c - '0'];
  3.    }


si c está entre '0' y '9' (recordando que son char porque están entre comillas)

a ndigit en la posición x (si c es un char de un numero, entonces al restarle '0' quedaría tabulado a 0) se le suma 1...

es decir...

si el numero es '3' que vale 51... si a 51 le restamos 48 (que es '0') nos queda 3, entonces a ndigit[3] se le suma 1 (++)
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
GGZ

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: [C] Contador de dígitos
« Respuesta #4 en: 17 Septiembre 2015, 05:56 am »

Claro, ahora entendo lo que decís pero si yo hago un  ++ndigit[(int)c];
¿Qué estaría haciendo ahí , por qué no funcioan eso?

¿ Debería usar atoi ?

Edit: No tampoco

O sea si quiero pasar de un char a un int pero de otra manera.
« Última modificación: 17 Septiembre 2015, 06:02 am por nisteeklod » En línea

LET'S DO STUFF!!
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [C] Contador de dígitos
« Respuesta #5 en: 17 Septiembre 2015, 06:16 am »

no e necesario atoi ahí, está bien como se usa ahí el código... a pesar que los char sean interpretados como letras por las impresiones de sistema, también son interpretados como números porque básicamente eso son
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hash 8 digitos
Nivel Web
Kerber0 2 3,334 Último mensaje 15 Julio 2010, 22:32 pm
por ~ Yoya ~
calculadora de 30 digitos « 1 2 »
Programación C/C++
peterfly 19 15,072 Último mensaje 2 Julio 2011, 01:22 am
por Nork
Clave wpa 13 digitos
Hacking Wireless
andvilla07 5 4,554 Último mensaje 27 Marzo 2013, 22:16 pm
por dato000
Contador de Digitos Numeros Pares
Programación C/C++
Seeven 3 8,525 Último mensaje 21 Septiembre 2014, 10:26 am
por Seeven
Contador separando digitos - ayuda! (C++)
Programación C/C++
Federicoide 1 2,604 Último mensaje 20 Febrero 2020, 20:05 pm
por Federicoide
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines