Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Daor02 en 20 Junio 2016, 12:46 pm



Título: Recorrer integer dígito por dígito
Publicado por: Daor02 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!  ;-) ;-) ;-)


Título: Re: Recorrer integer dígito por dígito
Publicado por: avesudra 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.


Título: Re: Recorrer integer dígito por dígito
Publicado por: MAFUS 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.


Título: Re: Recorrer integer dígito por dígito
Publicado por: tincopasan 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. }