Tengo este problema:
Escribe un programa que imprima una pirámide de dígitos como la de la figura, tomando como entrada el número de filas de la misma (debe ser menor de 10):
Tiene que tener espacios aunque aquí no se vean.
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
El código que he hecho es para el triángulo de Pascal, pero no sabría como se hace ahora para este, si alguien me pudiera modificar el código y ponérmelo se lo agradecería.
Muchas gracias.
Código C++:
Ver original#include<iostream>
using namespace std;
int fac(int n);//calcula el factorial
int com(int m,int n);//calcula la combinación
void space(int s);//separa los números
int main(){
int g,s=30;//g=grado,s=total de espacios
cout<<"Introduzca el número de filas de la pirámide : ";cin>>g;
for(int i=0;i<=g;i++){//desde se comienza con las combinaciones este es el m
space(s);//da los espacios requeridos
for(int k=0;k<=i;k++){//otra variable este es el n
cout<<com(i,k)<<" ";//cacula
}
cout<<endl;//salto de linea
s--;//se reduce en uno los espacios
}
return 0;
}
//factorial
int fac(int n){
int f=1;
for(int i=1 ; i<=n; i++){
f=f*i;
}
return f;
}
//combinación aquí entran los for del main
//m!/(m-n)!*n!
int com(int m,int n){
int com;
com=fac(m)/(fac(m-n)*fac(n));
return com;//devuelve el valor de la combinación
}
//espacios que se dan +0-
//para que aparezca centrado
//ya lo modifican para los valores de dos cifras
//para que parezca un triángulo
void space(int s){
for(int i=1;i<=s;i++){
cout<<" ";
}
}