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:
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!
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?
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!
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.
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.