una solución rápida podría ser
En vez de intentar meterlo todo en una misma función a veces es más fácil pensarlo si creas funciones auxiliares.
Código (cpp) [Seleccionar]
#include <iostream>
//Función que imprime números desde min hasta max
void print(int max, int min) {
for(int i = min; i < max; i++) {
std::cout << i+1;
}
std::cout << std::endl;
}
int main() {
int n = 4;
for(int i = 0; i < n; i++) {
//Para cada iteración el número más grande a imprimir se decrementa en uno,
print(n-i, 0);
}
//Empezamos en uno porque el 1 ya lo imprimió el bucle anterior y sino se repetirian
for(int i = 1; i < n; i++) {
//Le sumamos 1 porque como ya tenemos el uno la ha de imprimir 12 en la primera iteración
//También se podría dejar como print(i,0) y cambiar la comparacion por i != n.
print(i+1, 0);
}
}
En vez de intentar meterlo todo en una misma función a veces es más fácil pensarlo si creas funciones auxiliares.