elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Necesito ayuda con un programa en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Necesito ayuda con un programa en c  (Leído 1,610 veces)
jorgito19998

Desconectado Desconectado

Mensajes: 1



Ver Perfil
Necesito ayuda con un programa en c
« en: 20 Febrero 2018, 21:39 pm »

Tengo que hacer un programa en c que imprima el triángulo de pascal pero no se como hacerlo. Lo he hecho con funciones pero me han dicho que lo más fácil es sin funciones y con matrices. Que alguien me pase el código con esas características, lo agradecería muchísimo. Este es el triángulo de Pascal: https://es.wikipedia.org/wiki/Tri%C3%A1ngulo_de_Pascal

-Esto es lo que he hecho:

Código
  1. #include <stdio.h>
  2.  
  3. int factorial(int n)
  4. {
  5.    if(n<2)
  6.        return 1;
  7.    else
  8.        return n * factorial(n-1);
  9. }
  10.  
  11. int combinacion(int n, int r)
  12. {
  13.    if(r==1)
  14.        return n;
  15.    else
  16.    {
  17.        if(n==r)
  18.            return 1;
  19.        else
  20.            return factorial(n) / (factorial(r) * factorial(n - r));
  21.    }
  22. }
  23.  
  24. int main()
  25. {
  26.    for(int i=0; i<=6; i++)
  27.    {
  28.        for(int ii=0; ii<=i; ii++){
  29.            printf("%d  ", combinacion(i, ii));
  30. }
  31. int x=1;
  32. int y=1;
  33. if (x==y){
  34.          printf("\n");
  35.        y=y+2;
  36.        x=1;
  37. } else x++;
  38.    }
  39.  
  40.    return 0;
  41. }


· Los códigos deben ir en etiquetas GeSHi
-Engel Lex


« Última modificación: 21 Febrero 2018, 00:05 am por engel lex » En línea

dijsktra

Desconectado Desconectado

Mensajes: 110


Mr Edsger Dijsktra (Tribute to)


Ver Perfil
Re: Necesito ayuda con un programa en c (Triangulo de pascal)
« Respuesta #1 en: 23 Febrero 2018, 23:41 pm »

Primero va una muestra del cálculo del trangulo de Pascal de base N=10

Código:
10

Código:
    1     1     1     1     1     1     1     1     1     1 
    1     2     3     4     5     6     7     8     9
    1     3     6    10    15    21    28    36
    1     4    10    20    35    56    84
    1     5    15    35    70   126
    1     6    21    56   126
    1     7    28    84
    1     8    36
    1     9
    1

Y ahora uno de N=20. Quizás puedas no apreciarla dependiendo de la distorsión que pueda ocasionar la resolución de carcateres.

Código:
20
Código:
    1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1 
    1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19
    1     3     6    10    15    21    28    36    45    55    66    78    91   105   120   136   153   171
    1     4    10    20    35    56    84   120   165   220   286   364   455   560   680   816   969
    1     5    15    35    70   126   210   330   495   715  1001  1365  1820  2380  3060  3876
    1     6    21    56   126   252   462   792  1287  2002  3003  4368  6188  8568 11628
    1     7    28    84   210   462   924  1716  3003  5005  8008 12376 18564 27132
    1     8    36   120   330   792  1716  3432  6435 11440 19448 31824 50388
    1     9    45   165   495  1287  3003  6435 12870 24310 43758 75582
    1    10    55   220   715  2002  5005 11440 24310 48620 92378
    1    11    66   286  1001  3003  8008 19448 43758 92378
    1    12    78   364  1365  4368 12376 31824 75582
    1    13    91   455  1820  6188 18564 50388
    1    14   105   560  2380  8568 27132
    1    15   120   680  3060 11628
    1    16   136   816  3876
    1    17   153   969
    1    18   171
    1    19
    1

Puedes computar tritangulos de base hasta N=30, pero a no ser que tengas una resolucion suficiente en el terminal de caracteres por pantalla, las figuras saldran sin formatear, y el efecto del trangulo se puede perder... Cuidado también con N altos porque los enteros se pueden salir de rango y acabar en negativos... usar unsigned long....


Y este es el código que lo resuelve... Ah!, empecé a hacerlo en C++, pero con pocos cambios puedes pasarlo a C.

Código
  1. #include <iostream>  // cin, cout
  2. #include <iomanip>  // setw
  3.  
  4. using namespace std;
  5.  
  6. #define MAX 1000
  7.  
  8. // P : N > 0
  9. // Q : \forall ii,jj : 0 <= ii,jj < N : M[ii][jj]=C(ii+1,jj+1)
  10. // I : i > 0 -> \forall jj : 0 <= jj < N : M[i-1][jj]=C(i-1,jj)
  11.  
  12. // Inner loop
  13. // I2 : \forall jj : 0 <= jj < j : M[i][jj]=C(i+1,jj+1)
  14. // and
  15. // acum = i>0 -> acum= \sum k:0<=k<j: M(i-1,k)
  16.  
  17. // where C(i,j) is combinatory number
  18. //  C(1,j) = 1
  19. //  C(i+1,j) = \sum k:1<=k<=j: C(i,k)
  20.  
  21. void pascal(int M[][MAX], const int N)
  22. {
  23.  int acum;
  24.  int i,j;
  25.  for ( i=0; i<N ; i++)
  26.    for ( j=acum=0; j< N-i ; j++)
  27.      if (i==0)
  28. M[i][j]= 1;
  29.      else
  30. {
  31.  acum += M[i-1][j];
  32.  M[i][j] = acum;
  33. }
  34.  return;
  35. }
  36.  
  37. int main(int argc, char **args)
  38. {
  39.  int N;
  40.  int M[MAX][MAX];
  41.  cin >> N ;
  42.  pascal(M,N);
  43.  for (int i=0; i < N ; i++)
  44.    {
  45.      for (int j=0; j < N-i ; j++)
  46. cout << setw(5) << M[i][j] << " " ;
  47.      cout << endl;
  48.    }
  49.  return 0;
  50. }


« Última modificación: 24 Febrero 2018, 00:32 am por dijsktra » En línea

Si la depuración es el proceso de eliminar fallos en el software, entonces programar debe ser el proceso de ponerlos dentro. (Edsger Dijsktra)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
* [Source] Triangulo Pascal « 1 2 »
Programación Visual Basic
BlackZeroX 13 12,461 Último mensaje 6 Enero 2010, 03:02 am
por BlackZeroX
[SRC] Triangulo Pascal [by *PsYkE1*]
Programación Visual Basic
Psyke1 3 2,849 Último mensaje 27 Mayo 2010, 09:14 am
por Psyke1
[C] Imprimir Triangulo de Pascal
Programación C/C++
edr89 3 16,238 Último mensaje 7 Junio 2013, 09:27 am
por leosansan
Forma triangulo de pascal
Programación C/C++
shulpeca 0 1,644 Último mensaje 1 Diciembre 2017, 22:47 pm
por shulpeca
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines