Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema pirámide de dígitos

Estas en el tema de Problema pirámide de dígitos en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 17/11/2011, 02:36
 
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.      }
  #2 (permalink)  
Antiguo 17/11/2011, 11:52
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: Problema pirámide de dígitos

Cuenta la cantidad de numeros que hay en cada linea. En la primera hay 1, en la siguiente 3, en la siguiente 5, ... etc.
Los numeros van desde 1 hasta la cantidad de numeros / 2, y luego de vuelta a 1.

Parece una simplificacion del codigo que incluyes.
__________________
Visita mi perfil en LinkedIn
  #3 (permalink)  
Antiguo 21/11/2011, 07:33
 
Fecha de Ingreso: febrero-2011
Ubicación: Paraguay
Mensajes: 59
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: Problema pirámide de dígitos

Este codigo lo hice hace algun tiempo..Con algunas modificaciones creo que podras tener lo que buscas.. Un saludo
Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. int main(int argc, char* argv[]) {
  7.    int i, j, altura=0, inicio=0;
  8.    
  9.    cout << "Ingrese la altura: ";
  10.    cin >> altura;
  11.    
  12.    for(i=0; i<altura; i++) {
  13.       for(j=0; j<altura*2-1; j++) {
  14.          if(j > altura-i-2 && j < altura+i) {
  15.             cout << "*";
  16.          } else {
  17.             cout << " ";
  18.          }
  19.       }
  20.       cout << endl;
  21.    }
  22.    
  23.    return EXIT_SUCCESS;
  24. }

Etiquetas: programa, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:21.