• Sábado 14 de Diciembre de 2024, 14:37

Autor Tema:  triangulo de pascal casi listo  (Leído 7142 veces)

utz

  • Miembro activo
  • **
  • Mensajes: 44
    • Ver Perfil
triangulo de pascal casi listo
« en: Jueves 2 de Octubre de 2008, 21:38 »
0
hola, esoty haciendo un triangulo de pascal, aqui esta mi codigo

Código: Text
  1. int n;
  2. int matriz[max][max];
  3. int triangulo_pascal(int i,int j,int h,int k){
  4.     h=n/2;
  5.     for( i=0;i<n;i++){
  6.                      for(j=0;j<n*2;j++){
  7.                                       matriz[i][j]=0;
  8.                                       if(j==h){
  9.                                                matriz[i][j]=1;
  10.                                                k=h;
  11.                                                h--;
  12.                                                k++;
  13.                                                }
  14.                                       if(j==k){
  15.                                                matriz[i][j]=1;
  16.                                                }
  17.                                                }
  18.                                                }
  19.     for( i=2;i<10;i++){
  20.          for(j=0;j<21;j++){
  21.                            matriz[i][j]=matriz[i-1][j-1]+matriz[i-1][j+1];}}
  22.                                                
  23. }
  24.  
  25. main(){
  26.        printf(" Numeros de escalones del triangulo: ");
  27.        scanf("%d", &n);
  28.        for(int i=0;i<n;i++){
  29.               for(int j=0;j<n*2;j++){
  30.                      printf("%i ",matriz[i][j]);
  31.                      }
  32.                      printf("n");
  33.                      }
  34.                      system ("pause");
  35.                      }    
  36.  
  37.  


pero no se por que no imprime bien  :ouch: , por favor si me pueden ayudar a que imprima se lo agradeceria.

Werox

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: triangulo de pascal casi listo
« Respuesta #1 en: Viernes 3 de Octubre de 2008, 00:36 »
0
q tal yo tengo el codigo completo del triangulo de pascal creo solo dejame bucarlo y espero encontrarlo jejejejejejee

utz

  • Miembro activo
  • **
  • Mensajes: 44
    • Ver Perfil
Re: triangulo de pascal casi listo
« Respuesta #2 en: Viernes 3 de Octubre de 2008, 07:08 »
0
bueno, pero la gracia de esto es que asi puedo  aprender a mostrar matrices por medio de una funcion, es que tengo mas ejercicios parecidos y por eso quiero aprender.

saludos

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: triangulo de pascal casi listo
« Respuesta #3 en: Viernes 3 de Octubre de 2008, 08:54 »
0
Cita de: "utz"
no imprime bien :ouch:

Especifica un poco cuál es el problema. ¿Formateo en pantalla (presentación, vamos) o en los valores?

utz

  • Miembro activo
  • **
  • Mensajes: 44
    • Ver Perfil
Re: triangulo de pascal casi listo
« Respuesta #4 en: Viernes 3 de Octubre de 2008, 09:42 »
0
lo que pasa es que no se como imprimir el triangulo, es que trate de imprimirlo en la parte de la main, pero aun no aprendo como hacerlo.

imprimirlo sin el uso de funciones no me causa ningun problema, de hecho lo probe sin el uso de funciones y me imprimio lo que esperaba.

asi que es la parte de mostrar el triangulo por panatalla donde nesecito ayuda...  ^_^

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: triangulo de pascal casi listo
« Respuesta #5 en: Viernes 3 de Octubre de 2008, 10:54 »
0
Si sabemos de antemano la altura del triángulo n, podemos afirmar que la línea más larga va a estar compuesta de n valores.

Código: Text
  1.  
  2. 1 1 1 1 1 1
  3.  1 1 1 1 1
  4.   1 1 1 1
  5.    1 1 1
  6.     1 1
  7.      1
  8.  
  9.  

Entonces podemos afirmar que el elemento único tiene que estar precedido de n-1 espacios anteriores, los 2 elementos n-2 espacios, etc...

Espero haberme explicado correctamente, un saludo.

utz

  • Miembro activo
  • **
  • Mensajes: 44
    • Ver Perfil
Re: triangulo de pascal casi listo
« Respuesta #6 en: Sábado 4 de Octubre de 2008, 01:46 »
0
gracias moskito, pero por ai no va mi problema.

aver si ahora me explico mejor:

tengo una funcion que me genera el triangulo de pascal:

Código: Text
  1. # int crea_triangulo_pascal(int i,int j,int h,int k){
  2. #     h=n/2;
  3. #     for( i=0;i<n;i++){
  4. #                      for(j=0;j<n*2;j++){
  5. #                                       matriz[i][j]=0;
  6. #                                       if(j==h){
  7. #                                                matriz[i][j]=1;
  8. #                                                k=h;
  9. #                                                h--;
  10. #                                                k++;
  11. #                                                }
  12. #                                       if(j==k){
  13. #                                                matriz[i][j]=1;
  14. #                                                }
  15. #                                                }
  16. #                                                }
  17. #  for( i=2;i<10;i++){
  18. #          for(j=0;j<21;j++){
  19. #                            matriz[i][j]=matriz[i-1][j-1]+matriz[i-1][j+1];}}
  20. #                                                
  21. # }
  22.  

hasta aqui, ningun problema.

ahora viene la parte hacer la main(), donde pido el numero de escalones y ademas muestro el triangulo.

mi problema es que no sé llamar a la funcion que "hace el triangulo" y no se como le hago para mostrarlo por pantalla.

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: triangulo de pascal casi listo
« Respuesta #7 en: Sábado 4 de Octubre de 2008, 04:47 »
0
hey!

como va?

quiero ayudar... me podrias explicar que son los valores que le pasas por parametro a la funcion?

Código: Text
  1. int crea_triangulo_pascal(int i,int j,int h,int k){
  2.  


para imprimir se me ocurre que inicializes la matriz con todas las posiciones en 0 y dsp llames al crea triangulo, una vez hecho esto, al imprimir, imprimes una matriz normal, pero solo imprimes el contenido si es distinto de 0 sino imprimes un espacio.


saludos!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: triangulo de pascal casi listo
« Respuesta #8 en: Sábado 4 de Octubre de 2008, 19:50 »
0
Cita de: "utz"
int triangulo_pascal(int i,int j,int h,int k)

Para empezar, esto esta mal, ya que son variables locales de la función, no necesitas pasarlos por parámetro. Lo que sí tienes que pasar por parámetro es la matriz[][] y n (la altura del triángulo). JAMÁS (aunque todo es relativo) uses variables dentro de funciones que no hayas declarado dentro o pasado por parámetro.

Código: C
  1.  
  2. void triangulo_pascal(int triangulo[][], int altura)
  3. {
  4.     int i,j,h,k;
  5.     h=altura/2;
  6.     for( i=0;i<altura;i++)
  7.         for(j=0;j<n*2;j++)
  8.         {
  9.             triangulo[i][j]=0;
  10.  
  11.             if(j==h)
  12.             {
  13.                 triangulo[i][j]=1;
  14.                 k--=h++;
  15.             }
  16.  
  17.             if(j==k)
  18.                 triangulo[i][j]=1;
  19.         }
  20.  
  21.     for( i=2;i<10;i++)
  22.         for(j=0;j<21;j++)
  23.             triangulo[i][j]=triangulo[i-1][j-1]+triangulo[i-1][j+1];                        
  24. }
  25.  
  26.  

Y desde main() llamas a la función:

Código: C
  1.  
  2. triangulo_pascal(matriz, n);
  3.  
  4.  

utz

  • Miembro activo
  • **
  • Mensajes: 44
    • Ver Perfil
Re: triangulo de pascal casi listo
« Respuesta #9 en: Sábado 4 de Octubre de 2008, 21:07 »
0
gracias moskito, ya he entendido como utilizar la funcion y como llamarla desde la main()

aqui est ami codigo:

Código: Text
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4. #define max 40  
  5.  
  6.  void triangulo_pascal(int triangulo[max][max], int altura)
  7.  {
  8.      
  9.      int i,j,h,k;
  10.      h=altura;
  11.      for( i=0;i<altura;i++){
  12.          for(j=0;j<altura*2;j++)
  13.          {
  14.              triangulo[i][j]=0;
  15.  
  16.              if(j==h)
  17.              {
  18.                  triangulo[i][j]=1;
  19.                  
  20.              }
  21.  
  22.             if(j==k)
  23.                  triangulo[i][j]=1;
  24.          }k=h;
  25.                  k--;h++;}
  26.  
  27.      for( i=2;i<10;i++)
  28.          for(j=0;j<21;j++)
  29.              triangulo[i][j]=triangulo[i-1][j-1]+triangulo[i-1][j+1];                        
  30.  }
  31.  main(){
  32.        int n;
  33.        int matriz[max][max];
  34.        printf("Ingrese numeros de escalones del triangulo: ");
  35.        scanf("%d",&n);
  36.        triangulo_pascal(matriz, n);
  37.        printf("el triangulo es:nn");
  38.        for(int i=0;i<n;i++){
  39.                for(int j=0;j<n*2;j++){
  40.                        if(matriz[i][j]==0){
  41.                                            fflush(stdin);
  42.                                            printf("  ");
  43.                                            }else{
  44.                                            fflush(stdin);
  45.                                            printf("%d ", matriz[i][j]);
  46.                                            }
  47.                        }
  48.                        printf("n");}
  49.                        system("pause");
  50.                        }
  51.  
  52.  
  53.  



ahora la unica duda que  me queda es por que me imprime el numero: 2089948473 y no el numero 1 al final del triangulo.  esto cuando se ingresa una altura de 10.


saludos.
« última modificación: Domingo 5 de Octubre de 2008, 22:37 por utz »

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: triangulo de pascal casi listo
« Respuesta #10 en: Domingo 5 de Octubre de 2008, 01:24 »
0
Cita de: "utz"
h=(altura*2)/2;

 :no: h=altura;

Y esto es lo que me da cuando ejecuto con altura 3:

Código: Text
  1.  
  2. 0 0 0 1 0 0
  3. 0 0 1 0 1 0
  4. -858993460 1 0 2 0 -858993459
  5.  
  6.  

Así que haces algo mal, lo voy a ir depurando ya que no tengo nada que hacer  :P

utz

  • Miembro activo
  • **
  • Mensajes: 44
    • Ver Perfil
Re: triangulo de pascal casi listo
« Respuesta #11 en: Domingo 5 de Octubre de 2008, 22:38 »
0
aun no encuentro el problema, pero modifique el codigo de arriva para que no molesten los ceros.

gecias por tu ayuda moskito  B)  :good: