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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


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

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Recorrer integer dígito por dígito
« en: 20 Junio 2016, 12:46 pm »

Buenas! Tengo una duda pequeña!

Hay un ejercicio en el libro "Fundamentos de Programación, Piensa en C" que he podido resolver en otros lenguajes pero no en C!

Necesito pedirle al usuario un número de 4 dígitos e imprimirlo verticalmente. Si digita "6532" imprime:
"6
5
3
2"

En Python era tan sencillo como hacer esto:

num=input("Ingrese un número de 4 dígitos: ")

print (num[0])
print (num[1])
print (num[2])
print (num[3])

En Java con hacer esto ya estaba:

    String numero;
   
    System.out.println("Ingrese un número de cuatro dígitos: ");
    numero = lector.nextLine();
   
    System.out.println(numero.charAt(0));
    System.out.println(numero.charAt(1));
    System.out.println(numero.charAt(2));
    System.out.println(numero.charAt(3));

Pero no puedo en C. Sólo llevo esto:

#include <stdio.h>

int main(){
   int numero;
   
   printf("Ingrese un n%cmero de 4 d%cgitos: ",163,161);
   scanf("%c", &numero);
   
   printf("???????"); //No tengo idea de qué va aquí!
   
}

Hay alguna manera de hacerlo sin usar ciclos for? Gracias!  ;-) ;-) ;-)


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Recorrer integer dígito por dígito
« Respuesta #1 en: 20 Junio 2016, 13:00 pm »

El número 4578:
Código:
4578 % 10 = 8
4578 / 10 = 457     457 % 10 = 7
457  / 10 = 45       45 % 10 = 5
45   / 10 = 4         4 % 10 = 4

En cada división por 10 del anterior, se realiza truncamiento. Léelo de abajo hacia arriba. Es el problema con los lenguajes de alto nivel, que te acostumbras a que esté todo hecho. No es necesario ningún ciclo for, si sabes que es de 4 dígitos solo tienes que aplicar la matemática del revés pero voy a dejar que te comas tú el tarro :-D

Además para leer un entero en C, el especificador de formato en el scanf no es %c, es %d o %i (para el formato en base 10). El %c es para leer un único caracter.

Un saludo.


« Última modificación: 20 Junio 2016, 13:12 pm por avesudra » En línea

Regístrate en
MAFUS


Desconectado Desconectado

Mensajes: 1.492



Ver Perfil
Re: Recorrer integer dígito por dígito
« Respuesta #2 en: 20 Junio 2016, 13:24 pm »

Hazlo igual que en Java y Python: píllalo como cadena con %s en el scanf e imprime cada caracter  con notación de array, como en Python.
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
tincopasan


Desconectado Desconectado

Mensajes: 1.281

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Recorrer integer dígito por dígito
« Respuesta #3 en: 20 Junio 2016, 16:54 pm »

pues lo mismo que haces en python(que por cierto da asco ese método que usas,¿por qué sin for?)
creo que de python no entendiste demasiado, ya que ahora es básicamente lo mismo
en c:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(){
  4.   char numero[4];
  5.  
  6.   printf("Ingrese un n%cmero de 4 d%cgitos: ",163,161);
  7.   scanf("%s",numero);  //no es integer, en python tampoco por cierto
  8.  
  9.   printf("%c\n",numero[0]); //No tengo idea de qué va aquí!
  10.   printf("%c\n",numero[1]);
  11.   printf("%c\n",numero[2]);
  12.   printf("%c\n",numero[3]);
  13. return 0;
  14. }
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines