Autor
|
Tema: Mostrar ceros a la izquierda en un entero en C++ (Leído 22,793 veces)
|
erest0r
Desconectado
Mensajes: 147
|
Buenas noches mi problema es que no encuentro como hacer para que un entero muestre n cantidad de ceros (0) a la izquierda, lo mas que he encontrado es de la cabecera <iomanip>, setfill(); setw(); pero setfill() recibe como parametro un char, y queria saber si existia algo parecido como setprecision(); fixed; pero para el lado izquierdo de los enteros. Les dejare mi codigo para que vean mejor a que me refiero #include <iostream>
using namespace std;
int main( int argc, char* args[] ) { int numero, digito[4], temp, i, numerocifrado; cout << "Ingrese un numero de 4 digitos: "; cin >> numero;
// Obtenemos cada digito por separado digito[0] = numero / 1000; digito[1] = ( numero % 1000 ) / 100; digito[2] = (( numero % 1000 ) % 100 ) / 10; digito[3] = (( numero % 1000 ) % 100 ) % 10;
// Codificamos cada digito digito[0] = ( digito[0] + 7 ) %10; digito[1] = ( digito[1] + 7 ) % 10; digito[2] = ( digito[2] + 7 ) % 10; digito[3] = ( digito[3] + 7 ) % 10;
// Intercambiamos las posiciones de cada digito
// El primer digito con el tercero temp = digito[0]; digito[0] = digito[2]; digito[2] = temp;
// Y el segundo digito con el cuarto temp = digito[1]; digito[1] = digito[3]; digito[3] = temp;
// Pasamos los valores segun la posicion de la variable digito[] a numerocifrado numerocifrado = ( digito[0] * 1000 ) + ( digito[1] * 100 ) + ( digito[2] * 10 ) + digito[3];
// Mostramos el numero cifrado cout << "Numero original: " << numero << endl << "Numero cifrado: " << numerocifrado << endl;
cin.get(); return 0; }
Si introducen el numero 1234, deberia mostrar 0189, pero solo muestra 189, a eso me estoy refiriendo, ¿Como mostrar ese cero a la izquierda faltante? Muchas gracias.
|
|
|
En línea
|
Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
El ejemplo que te pongo a continuación debería imprimir 00025 cout << setfill('0') << setw(5) << 25;
* setfill configura el caracter de relleno. * setw configura la longitud en caracteres de los valores que se pasen a continuación.
|
|
|
En línea
|
|
|
|
erest0r
Desconectado
Mensajes: 147
|
De esa forma ya la habia hecho, pense que existia otra solucion, gracias.
|
|
|
En línea
|
Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
|
|
|
Stereo
Desconectado
Mensajes: 25
|
También: printf("%02d", 1);
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
También: printf("%02d", 1);
Eso no es c++
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
C++ es un mejor C como indica su nombre y la biblioteca cstdio (propia de C++ y no de C) declara la funcion de estilo C printf.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
ecfisa
Desconectado
Mensajes: 114
|
Hola erest0r. ...lo mas que he encontrado es de la cabecera <iomanip>, setfill(); setw(); pero setfill() recibe como parametro un char, y queria saber si existia algo parecido como setprecision(); fixed; pero para el lado izquierdo de los enteros. Es que numéricamente no tiene ningún sentido usar ceros a la izquierda. Es decir, si es a efectos de presentación, tratá el valor como una secuencia de caracteres. Saludos.
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
C++ es un mejor C como indica su nombre y la biblioteca cstdio (propia de C++ y no de C) declara la funcion de estilo C printf.
Lo se, pero si estás haciendo prácticas en c++... céntrate en programar c++. printf, aunque sea algo perfectamente válido en c++, es c. A mi me ha venido gente diciendo que sabía programar en c++ sólo porque mezclaban algunas instancias de string en código c puro... eso le duela a quien le duela no es programar en c++.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
En fin, cualquier codigo que no compile en C no es C y cualquier codigo que compile en C++ lo es. Guste o no C++ es un lenguaje multiparadigma y muy versatil.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
En fin, cualquier codigo que no compile en C no es C y cualquier codigo que compile en C++ lo es. Guste o no C++ es un lenguaje multiparadigma y muy versatil.
Ya, pero si no aprovechas las características que diferencian c++ de c... estás programando realmente en c. void main( ) { }
void main( ) { printf( "Programa en C++\n" ); }
Realmente el segundo ejemplo es programar en c++??? el compilador te generará un ejecutable válido... está claro, pero eso no es c++. El estándar aceptó en su momento todas las librerías de c entre otras cosas para facilitar la migración del código... fuera de eso no tiene sentido porque entonces te encuentras con que es el único estándar que tiene la mitad de su biblioteca con funciones duplicadas.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Transformar una cadena rellenada con ceros a la izquierda a entero
Programación Visual Basic
|
merlin
|
2
|
2,296
|
18 Abril 2007, 08:20 am
por merlin
|
|
|
[DUDA] Contador con ceros a la izquierda
Programación Visual Basic
|
HJZR4
|
6
|
3,834
|
20 Octubre 2008, 21:18 pm
por ssccaann43 ©
|
|
|
Donde estan los ceros? o.O
Programación Visual Basic
|
extreme69
|
8
|
3,622
|
1 Noviembre 2011, 05:00 am
por extreme69
|
|
|
Enteros con ceros al inicio AYUDA
Programación C/C++
|
cesarjgrd.18
|
6
|
2,981
|
7 Noviembre 2011, 02:17 am
por BlackZeroX
|
|
|
Como no mostrar ceros y signos negativos en funcion
.NET (C#, VB.NET, ASP)
|
luis456
|
5
|
3,338
|
2 Julio 2014, 06:08 am
por luis456
|
|