Advertisement
nasho97

Mod1Cuest3Preg6

Aug 17th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.94 KB | None | 0 0
  1. //Ignacio Alejandro Ruiz Garrido
  2. //14 de Agosto
  3. //Triángulo de Pascal
  4. //Que mediante el número entregado, mostrar todos los niveles, incluyendo el del número, por pantalla.
  5.  
  6. #include <stdio.h>
  7.  
  8. int main ()                                                                                     //Empieza el programa
  9. {                                                                                               //Se crean las variables necesarias
  10.     unsigned int Nivel;                                                                         //Nivel, variable para asignar, que servirá como tope del programa
  11.     unsigned int ContNivel;                                                                     //Contador Nivel, se usa para recorrer desde 1 a Nivel, y también se usa de tope
  12.     unsigned int Cont;                                                                          //Contador el cual recorrerá ContNivel, para tener cada término de un nivel
  13.     unsigned long long FacNivel;                                                                //Factorial del Nivel, se usa para guardar el factorial del nivel y así usarlo en la fórmula
  14.     unsigned long long FacCont;                                                                 //Factorial del Contadaor, lo mismo que factorial nivel
  15.     unsigned long long Factorial;                                                               //Factorial, es el factorial del (ContNivel-Cont), es el nivel actual menos el término deseado
  16.     unsigned int aux;                                                                           //Auxiliar de ayuda, para calcular todos los factoriales anteriores
  17.     unsigned long long pantalla;                                                                //Variable para finalmente mostrar por pantalla
  18.    
  19.     Nivel=21;                                                                                   //Asigno 21 a Nivel, para que entre sí o sí al while, aunque creo que sin esto, también funciona
  20.  
  21.     while ((Nivel<1)||(Nivel>20))                                                               //Verificación de los límites establecidos
  22.     {
  23.         scanf ("%u",&Nivel);                                                                    //Se asigna la variable Nivel, hasta que cumpla las condiciones
  24.     }
  25.    
  26.     for (ContNivel=1;ContNivel<=Nivel;ContNivel=ContNivel+1)                                    //Primer FOR, donde recorremos con ContNivel hasta llegar al tope (Nivel), y así -->
  27.     {                                                                                           //-->rellenar cada nivel del triángulo
  28.         for (Cont=1;Cont<=ContNivel;Cont+=1)                                                    //2° FOR, se recorre el nivel actual(ContNivel), para calcular y poner cada término-->
  29.         {                                                                                       //--> del nivel correspondiente
  30.             if ((ContNivel==1) && (Cont==1))                                                    //Condición para rellenar el único término del nivel 1
  31.             {
  32.                 for (aux=1;aux<(Nivel);aux++)                                                   //FOR para dejar los espacios en blancos necesarios, para formar el triángulo
  33.                 {
  34.                     printf(" ");                                                                //el espacio para que quede como triángulo
  35.                 }
  36.                 printf ("1\n");                                                                 //Se muestra el primer término de todos, el 1 solo
  37.             }
  38.             else                                                                               
  39.             {
  40.                 if (Cont==1)                                                                    //Condición para poner el primer término de cada nivel, partiendo desde el 2° nivel
  41.                 {
  42.                     for (aux=1;aux<=(Nivel-ContNivel);aux++)                                    //FOR para dejar los espacios en blancos necesarios, para formar el triángulo
  43.                     {
  44.                         printf(" ");                                                            //el espacio para que quede como triángulo, aunque después del nivel 5 queda horrible igual
  45.                     }
  46.                     printf ("1 ");                                                              //Se muestra por pantalla el primer término de cada nivel
  47.                 }
  48.                 else if (Cont==ContNivel)                                                       //Lo mismo pero al final, para mostrar el último término de cada nivel, desde el 2°
  49.                 {
  50.                     printf ("1\n");                                                             //Se muestra por pantalla el último término y se salta una línea para separar niveles
  51.                 }
  52.                 else                                                                            //Para el resto de casos, donde se busca los términos "centrales" o, más bien dicho,-->
  53.                 {                                                                               //--> los términos que no pertenecen a los bordes del nivel
  54.                     for (FacNivel=1,aux=1;aux<ContNivel;aux++)                                 
  55.                     {                                                                           //Se calcula el Factorial del Nivel actual, para utilizar en la fórmula
  56.                         FacNivel=FacNivel*aux;                                                 
  57.                     }                                                                          
  58.                     for (FacCont=1,aux=1;aux<Cont;aux++)                                        //Se calcula el Factorial del Contador, que sería la posición del término que estamos-->
  59.                     {                                                                           //-->buscando
  60.                         FacCont=FacCont*aux;                                                   
  61.                     }
  62.                     for (Factorial=1,aux=1;aux<=(ContNivel-Cont);aux++)                         //Último factorial por calcular, el cual es El nivel actual menos la posición del-->
  63.                     {                                                                           //--> término que se busca
  64.                         Factorial=Factorial*aux;                                               
  65.                     }
  66.                    
  67.                     pantalla=FacNivel/(FacCont*Factorial);                                      //Aplicamos Fórmula para encontrar los términos del triángulo de pascal (n!/(k!*(n-k)!))
  68.                     printf ("%llu ", pantalla);                                                 //Se muestra por pantalla el resultado del término
  69.                 }
  70.             }
  71.         }
  72.     }
  73.     return 0;
  74. }                                                                                               //Termina el programa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement