Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Ignacio Alejandro Ruiz Garrido
- //14 de Agosto
- //Triángulo de Pascal
- //Que mediante el número entregado, mostrar todos los niveles, incluyendo el del número, por pantalla.
- #include <stdio.h>
- int main () //Empieza el programa
- { //Se crean las variables necesarias
- unsigned int Nivel; //Nivel, variable para asignar, que servirá como tope del programa
- unsigned int ContNivel; //Contador Nivel, se usa para recorrer desde 1 a Nivel, y también se usa de tope
- unsigned int Cont; //Contador el cual recorrerá ContNivel, para tener cada término de un nivel
- unsigned long long FacNivel; //Factorial del Nivel, se usa para guardar el factorial del nivel y así usarlo en la fórmula
- unsigned long long FacCont; //Factorial del Contadaor, lo mismo que factorial nivel
- unsigned long long Factorial; //Factorial, es el factorial del (ContNivel-Cont), es el nivel actual menos el término deseado
- unsigned int aux; //Auxiliar de ayuda, para calcular todos los factoriales anteriores
- unsigned long long pantalla; //Variable para finalmente mostrar por pantalla
- Nivel=21; //Asigno 21 a Nivel, para que entre sí o sí al while, aunque creo que sin esto, también funciona
- while ((Nivel<1)||(Nivel>20)) //Verificación de los límites establecidos
- {
- scanf ("%u",&Nivel); //Se asigna la variable Nivel, hasta que cumpla las condiciones
- }
- for (ContNivel=1;ContNivel<=Nivel;ContNivel=ContNivel+1) //Primer FOR, donde recorremos con ContNivel hasta llegar al tope (Nivel), y así -->
- { //-->rellenar cada nivel del triángulo
- for (Cont=1;Cont<=ContNivel;Cont+=1) //2° FOR, se recorre el nivel actual(ContNivel), para calcular y poner cada término-->
- { //--> del nivel correspondiente
- if ((ContNivel==1) && (Cont==1)) //Condición para rellenar el único término del nivel 1
- {
- for (aux=1;aux<(Nivel);aux++) //FOR para dejar los espacios en blancos necesarios, para formar el triángulo
- {
- printf(" "); //el espacio para que quede como triángulo
- }
- printf ("1\n"); //Se muestra el primer término de todos, el 1 solo
- }
- else
- {
- if (Cont==1) //Condición para poner el primer término de cada nivel, partiendo desde el 2° nivel
- {
- for (aux=1;aux<=(Nivel-ContNivel);aux++) //FOR para dejar los espacios en blancos necesarios, para formar el triángulo
- {
- printf(" "); //el espacio para que quede como triángulo, aunque después del nivel 5 queda horrible igual
- }
- printf ("1 "); //Se muestra por pantalla el primer término de cada nivel
- }
- else if (Cont==ContNivel) //Lo mismo pero al final, para mostrar el último término de cada nivel, desde el 2°
- {
- printf ("1\n"); //Se muestra por pantalla el último término y se salta una línea para separar niveles
- }
- else //Para el resto de casos, donde se busca los términos "centrales" o, más bien dicho,-->
- { //--> los términos que no pertenecen a los bordes del nivel
- for (FacNivel=1,aux=1;aux<ContNivel;aux++)
- { //Se calcula el Factorial del Nivel actual, para utilizar en la fórmula
- FacNivel=FacNivel*aux;
- }
- 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-->
- { //-->buscando
- FacCont=FacCont*aux;
- }
- for (Factorial=1,aux=1;aux<=(ContNivel-Cont);aux++) //Último factorial por calcular, el cual es El nivel actual menos la posición del-->
- { //--> término que se busca
- Factorial=Factorial*aux;
- }
- pantalla=FacNivel/(FacCont*Factorial); //Aplicamos Fórmula para encontrar los términos del triángulo de pascal (n!/(k!*(n-k)!))
- printf ("%llu ", pantalla); //Se muestra por pantalla el resultado del término
- }
- }
- }
- }
- return 0;
- } //Termina el programa
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement