Recorrer integer dígito por dígito

Iniciado por Daor02, 20 Junio 2016, 12:46 PM

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

Daor02

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!  ;-) ;-) ;-)

avesudra

#1
El número 4578:
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.
Regístrate en

MAFUS

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.

tincopasan

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:
#include <stdio.h>
#include <string.h>
int main(){
   char numero[4];

   printf("Ingrese un n%cmero de 4 d%cgitos: ",163,161);
   scanf("%s",numero);  //no es integer, en python tampoco por cierto

   printf("%c\n",numero[0]); //No tengo idea de qué va aquí!
   printf("%c\n",numero[1]);
   printf("%c\n",numero[2]);
   printf("%c\n",numero[3]);
return 0;
}