Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Sothu en 12 Diciembre 2015, 17:01 pm



Título: Alinear texto a la derecha
Publicado por: Sothu en 12 Diciembre 2015, 17:01 pm
Buenas!
Me encuentro con una sequencia de datos que deben ir siendo alineados a la derecha y creo que estoy usando mal el cout << setw( WIDTH ).
El codigo de esta parte es este:
Código:
while ( ! fin.eof() )
    {
        cout << codi << " " << nom << setw( WIDTH ) << numero << endl;
        fin >> nom >> codi >> numero;
    }
Dejo tambien una imagen de mi resultado y de como deberia ser, a ver si alguien puede hecharme un cable..
http://imageshack.com/a/img903/7683/C834En.png
Gracias!


Título: Re: Alinear texto a la derecha
Publicado por: Sothu en 12 Diciembre 2015, 17:14 pm
Lo que vi que falla es que el setw empieza a contar los espacios despues de la ultima palabra escrita, cuando lo que deseo que haga es contarlas desde el principio de la linea. Alguna idea?


Título: Re: Alinear texto a la derecha
Publicado por: fary en 12 Diciembre 2015, 19:12 pm
Te diré que, el código del programa esta bién, lo que pasa que no es lo mismo realizar una tabulación desde la posicion 5 que desde la 7, me explico:

Fila 1                        Fila 2
perro                  589456            
Elefante                   896454    

Perro (4 char ) + 18 Espacios = Inicio Segunda fila en la posicion 22
Elefante (8 char) + 18 Espacios = Inicios segunda fila posicion 26

Para desarrollar una solución con las filas perfectas tendrías que desarrollar una algoritmo que le restase los espacios cuando mas grande fuera el nombre del animal y te saldrían todas las filas cuadradas.

Los de los animales a sido un ejemplo, espero que lo hallas logrado entender.

saludos!


Título: Re: Alinear texto a la derecha
Publicado por: Sothu en 12 Diciembre 2015, 19:29 pm
Y no hay alguna manera de que cuente a partir del principio? Es decir, que ignore lo que tenga escrito a la izquierda de manera que todas las filas queden alineadas.


Título: Re: Alinear texto a la derecha
Publicado por: fary en 12 Diciembre 2015, 19:38 pm
Te he respondido arriba como hacerlo  :rolleyes:

Partiremos de la base de que los primeros 20 caracteres son para la primera fila
y desde el caracter 21 hasta X sera para la segunda fila, entonces:


(20 - strlen(perro)) = 15, imprimimos perro, 15 espacios y a continuación la segunda columna.

(20 - strlen(elefante)) = 12, imprimimos elefante, 12 espacios y a continuacion la segunda columna, y quedaría así:

Fila1                fila2
perro                589456
elefante            896454

Espero lo hallas entendido ahora.