Código
#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.