Código
#include <iostream> #include <fstream> using namespace std; int main() { int enteroEntrada, enteroSalida = 0; const int CENTINELA = 0; ifstream entrada; ofstream salida; entrada.open("entrada.txt"); salida.open("salida.txt"); if (entrada.is_open()){ entrada >> enteroEntrada; while (enteroEntrada != CENTINELA){ if (enteroEntrada > 0){ while (enteroEntrada > 0){ // Bucle para dar la vuelta al número enteroEntrada enteroSalida = enteroSalida * 10 + enteroEntrada % 10; enteroEntrada = enteroEntrada / 10; } salida << enteroSalida << endl; // Escribimos en el fichero salida.txt } entrada >> enteroEntrada; // Leer el siguiente enteroSalida = 0; } } else { cout << "ERROR: el archivo no pudo abrirse." << endl; } entrada.close(); salida.close(); return 0; }
Tengo ese sencillo programa que lee un entero de un fichero de entrada y escribe ese entero (del revés) en otro fichero de salida. El problema es que para la entrada "100" la salida es "1" cuando debería ser "001". Lo que me lleva a pensar que he de usar variables char y/o string en vez de int (corregidme si me equivoco hasta este punto). El problema, de nuevo, es que intento planteármelo usando esas variables... Leo una cadena y voy almacenando los valores de forma invertida, pero claro, no sé cuántos dígitos tendrá el número de entrada, así que no puedo definir el tamaño de mi "contenedor" (un array de char, por ejemplo).
No sé si me explico...