El código debe estar publicado entre
etiquetas de Código GeSHi. Puedes seleccionarlas en el desplegable que dice "Código GeSHi" o escribiendo directamente:
[code=cpp]
// Tu codigo C++
[/code]
Los espacios tienes que imprimirlos también tú pues el programa siempre escribirá desde la izquierda en cada línea. Entonces tienes que encontrar un patrón (una regla) que sigan estos espacios. Además lo bueno es que solo tienes que preocuparte por los espacios a la izquierda ya que a la derecha son indiferentes.
Si te fijas en la línea 0, los espacios a la izquierda son: 0. En la línea 1, los espacios a la izquierda son: 1. ...así hasta que solo imprimes 1 valor y entonces los espacios serán (n-1) y entonces empiezan a disminuir.
Otro problema que veo es que no va a parecer centrado sino que aparecerá alineado a la derecha. Esto es porque al usar fuentes monoespaciadas (todos los caracteres ocupan lo mismo), en la línea 1 (empezando a contar por el 0) el espacio ocupará el hueco del 1, el 1 el hueco del 2,..., y el 5 ocupará el hueco del 6 por lo que quedará a la derecha. La solución es incluir un espacio entre cada valor de forma que quede:
1 2 3 4
1 2 3
1 2
1
1 2
1 2 3
1 2 3 4
Para que se entienda bien lo que tienes que hacer:
int numeroMaximo = 6; // por ejemplo
for(int linea = 0; linea < numeroMaximo; ++linea){
// En la linea 0 -> 0 espacios | En la linea 1 -> 1 espacio | En la linea 2 -> 2 espacios | ...
for(int espacios = 0; espacios < linea; ++espacios){
cout << " ";
}
// En la linea 0 -> 6 numeros | En la linea 1 -> 5 numeros | En la linea 2 -> 4 numeros | ...
for(int numero = 1; numero <= (numeroMaximo - linea); ++numero){
cout << numero << " "; // Incluimos un espacio despues de cada numero para que tenga forma
}
}
Con esto consigues la primera mitad.
Ahora te toca ver cómo haces la segunda mitad pero la idea es la misma.