Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/11/2011, 02:36
juangebeboz
 
Fecha de Ingreso: octubre-2011
Mensajes: 15
Antigüedad: 13 años, 1 mes
Puntos: 1
Problema pirámide de dígitos

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
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. int fac(int n);//calcula  el factorial
  5. int com(int m,int n);//calcula la combinación
  6. void space(int s);//separa los números
  7.  
  8. int main(){
  9.     int g,s=30;//g=grado,s=total de espacios
  10.     cout<<"Introduzca el número de filas de la pirámide : ";cin>>g;
  11.     for(int i=0;i<=g;i++){//desde se comienza con las combinaciones este es el m
  12.         space(s);//da los espacios requeridos
  13.         for(int k=0;k<=i;k++){//otra variable este es el n
  14.                 cout<<com(i,k)<<"  ";//cacula
  15.                 }
  16.                 cout<<endl;//salto de linea
  17.                 s--;//se reduce en uno los espacios
  18.         }
  19.     system("pause");
  20.     return 0;
  21. }
  22. //factorial
  23. int fac(int n){
  24.     int f=1;
  25.     for(int i=1 ; i<=n; i++){
  26.             f=f*i;
  27.             }
  28.     return f;
  29. }
  30.  
  31. //combinación aquí entran los for del main
  32. //m!/(m-n)!*n!
  33. int com(int m,int n){
  34.     int com;
  35.     com=fac(m)/(fac(m-n)*fac(n));
  36.     return com;//devuelve el valor de la combinación
  37. }
  38.  
  39. //espacios que se dan +0-
  40. //para que aparezca centrado
  41. //ya lo modifican para los valores de dos cifras
  42. //para que parezca un triángulo
  43. void space(int s){
  44.      for(int i=1;i<=s;i++){
  45.              cout<<" ";
  46.              }
  47.      }