Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Cómo hacer que aparezcan 0 a la izquierda imprimiendo una variable.

Estas en el tema de Cómo hacer que aparezcan 0 a la izquierda imprimiendo una variable. en el foro de C/C++ en Foros del Web. Bueno, es que resolví un problema que viene en mi libro de C++, sobre un programa que cifre y descifre números de 4 dígitos con ...
  #1 (permalink)  
Antiguo 24/11/2012, 02:53
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años
Puntos: 8
Pregunta Cómo hacer que aparezcan 0 a la izquierda imprimiendo una variable.

Bueno, es que resolví un problema que viene en mi libro de C++, sobre un programa que cifre y descifre números de 4 dígitos con una fórmula que te dan (para cifrar, primero le sumas 7 y sacas modulo 10 a cada dígito, y luego intercambias el dígito 1 con el 3, y el 2 con el 4). Pues me salió bien y funciona... pero no pone los 0 a la izquierda y me gustaría saber cómo hacerlo.

Les pongo el código fuente:

Código C++:
Ver original
  1. #include <iostream>
  2. using std::cout;
  3. using std::cin;
  4. using std::endl;
  5.  
  6. class Cifrado
  7. {
  8. public:
  9.     int cifrar(int original)
  10.     {
  11.         int cifrado;
  12.         int n1, n2, n3, n4;
  13.         int temp;
  14.  
  15.         n1 = ((original / 1000) + 7) % 10;
  16.         n2 = (((original % 1000) / 100) + 7) % 10;
  17.         n3 = (((original % 100) / 10) + 7) % 10;
  18.         n4 = ((original % 10) + 7) % 10;
  19.  
  20.         temp = n3;
  21.         n3 = n1;
  22.         n1 = temp;
  23.         temp = n4;
  24.         n4 = n2;
  25.         n2 = temp;
  26.  
  27.         return (n1*1000 + n2*100 + n3*10 + n4);
  28.     }
  29.  
  30.     int descifrar(int original)
  31.     {
  32.         int n1, n2, n3, n4;
  33.         int temp;
  34.  
  35.         n1 = original / 1000;
  36.         n2 = (original % 1000) / 100;
  37.         n3 = (original % 100) / 10;
  38.         n4 = (original % 10);
  39.  
  40.         temp = n3;
  41.         n3 = n1;
  42.         n1 = temp;
  43.         temp = n4;
  44.         n4 = n2;
  45.         n2 = temp;
  46.  
  47.         n1 = procesar(n1);
  48.         n2 = procesar(n2);
  49.         n3 = procesar(n3);
  50.         n4 = procesar(n4);
  51.  
  52.         return n1*1000 + n2*100 + n3*10 + n4;
  53.     }
  54.  
  55. private:
  56.     int procesar(int numero)
  57.     {
  58.         if(numero > 6)
  59.             numero -= 7;
  60.         else
  61.             numero += 3;
  62.  
  63.         return numero;
  64.     }
  65. };
  66.  
  67. int main()
  68. {
  69.     Cifrado cifrador;
  70.  
  71.     int numero_cifrar;
  72.     int numero_cifrado;
  73.     int numero_descifrado;
  74.  
  75.     cout << "Escriba el numero a cifrar: ";
  76.     cin >> numero_cifrar;
  77.  
  78.     numero_cifrado = cifrador.cifrar(numero_cifrar);
  79.     cout << "\nNumero cifrado: " << numero_cifrado << endl;
  80.  
  81.     numero_descifrado = cifrador.descifrar(numero_cifrado);
  82.     cout << "\nNumero descifrado: " << numero_descifrado << endl;
  83.  
  84.     return 0;
  85. }

De antemano muchas gracias. Ah, y también les agradecería si me dieran una opinión del programa, si está bien hecho, si se podría hacer mejor y esas cosillas.

Saludos.
  #2 (permalink)  
Antiguo 24/11/2012, 03:34
 
Fecha de Ingreso: julio-2012
Mensajes: 133
Antigüedad: 11 años, 9 meses
Puntos: 22
Respuesta: Cómo hacer que aparezcan 0 a la izquierda imprimiendo una variable.

Cita:
pero no pone los 0 a la izquierda y me gustaría saber cómo hacerlo.
Hola reethok.

No estoy seguro de entender lo que buscas, pero si es completar la salida con ceros a la izquierda podes hacer:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4.  
  5. ...
  6.  
  7.   cout << "\nNumero cifrado: " << setfill('0') << setw(4)
  8.        << numero_cifrado << endl;
  9.   ...
  10.   cout << "\nNumero descifrado: " << setfill('0') << setw(4)
  11.        << numero_descifrado << endl;
  12.  
  13. ...

Saludos.

Etiquetas: cifrado, descifrado, algoritmos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:28.