Ayuda iomanip en C++ y sistemas de ecuaciones

Hola, alguien sabe como usar la librería iomanip para mostrar por pantalla sistemas de ecuaciones de forma elegante en C++?. Es que me han dicho que es con esta librería y con una función setw(numero) pero no sé cómo se usa. Quisiera que el sistema quedara asi:
+ 2.4556 X1 + 4.345 X2 = 3
+ 5 X1 + 3 X2 = 4.5 alineando las incognitas ,en vez de así

+ 2.4556 X1 + 4.345 X2 = 3
+ 5 X1 + 3 X2 = 4.5 que están desordenados

Aqui pongo mi código fuente:

void MostrarSistema(Tmatriz &matriz, Tindependientes b)
{
     int i;
     int j;
     
     cout << "El sistema de ecuaciones es el siguiente: " << endl;
     cout << endl;
     
     for(i = 0; i < matriz.N; i++)
     {
           for (j = 0; j < matriz.N; j++)
           {
                cout << "+" << " " << matriz.A[i][j] << " " << "X" << j + 1 << " " ;
           }
           cout << "= " ;
           cout << b[i] << endl;
     }
     cout << endl;
}


Gracias de antemano :)
Pues vas bien encaminado, la función setw() es lo que buscas (imprescindible para hacer tablas perfectamente alineadas):

http://www.cplusplus.com/reference/iost ... /setw.html

Usar el setw() es sencillo: el argumento simplemente es la longitud en caracteres que va a reservar en la pantalla. Si pones por ejemplo:

cout << setw(10) << i;


donde i es un simple entero pues hará lo siguiente:
  • Si i tiene una cifra pues escribirá 9 espacios e i alineado a la derecha
  • Si i tiene dos cifras pues escribiará 8 espacios e i a la derecha
  • Si i tiene tres cifras pues 7 espacios e i a la derecha
  • ...

Además fíjate que el setw() en el cout se pone antes y no después de lo que queremos "espaciar".

Y si quieres que en vez de espacios el caracter sea otro cualquiera (asteriscos, guiones o lo que sea) pues entonces tienes que usar setfill():

http://www.cplusplus.com/reference/iost ... tfill.html
Gracias xzibit probaré a ver si me queda de alguna forma bien

un saludo [sonrisa]
2 respuestas