SoloCodigo
Programación General => Pascal => Mensaje iniciado por: Lastent en Martes 29 de Marzo de 2005, 02:56
-
Porfavor queria pedirles ayuda, lo que pasa es que no se me ocurre nada para programar el triangulo de pascal, no les pido que me de el programa fuente si no que me den ideas de como puedo hacer
Lastent.
-
Hola que tal.
Una forma facil es usando la formula de las combinaciones que es:
y solo con 2 ciclos for, en el primero varias tu n, hasta donde quieras mostrar el triangulo y en el segundo varias la k de 0 a n, y el resultado es lo que te devuelva la formula de ariba.
Espero que sepas como usarla y te sirva.
Hasta luego.
-
Bueno sabes que para hacer el triangulo de pascal si no te has dado cuenta son potencias de 11
11^0 = 1
11^1= 11
11^2 = 121 y asi sucesivamente asi lo que tienes que hacer es
program tria_pascal;
var
factor,i:integer;
begin
factor:=1;
for i:=1 to 12(depende cuantas filas quieres que tenga el triangulo de pascal) do
begin
writeln(factor);
factor:=factor*11;
end;
end.
-
Eso de las potencias esta mal porque si te das cuenta solo funciona hasta 11 elvevado a la 4 o 5
-
No man lo de las potencias es correcto lo que pasa es que te has confundido ya que tu piensas que en la potencial 6 no sale la suma pero si te das cuenta como la suma es mayor a 10 le pasa una unidad al siguiente digito
1
11
121
1331
14641
161051
1771561
19487171
214358881
-
Se supone que el triangulo de pascal es:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
.
.
.
Y lo que has sugerido solo sirve hasta 11^4, como ya lo habia mencionada antes, la mejor farma es utilizando la formula de las conbinaciones:
La cual genera el triangulo a la perfeccion, ya que esta tambinén es usada en el polinomio de Newton y tiene muchas otras aplicaciones.
Bueno, espero que alla quedado todo claro y que no haya inconformidades.
Hasta luego.
-
Bueno esas son las formas matematicas, pero suponiendo que no seas tan buen matematico o quieras hacerlo utilizando el potencial de la computadora, deberias intentar generar linea por linea. Cada lineala puedes obtener de la anterior utilizando una recursiva. Este procedimiento quiza te de una idea de lo que hay que hacer.
La razon por la cual empieza el n es dos, es porque el n=1 es usado para guardar un cero, que se utiliza para sacar la suma de los unos exteriores.
Procedure GenerarLinea(numero:integer);
var
n:integer;
begin
n:=2;
if numero=1 then Linea[2]:=1 else
begin
while n<=numero do
begin
Linea[n]:=LineaPrevia[n]+LineaPrevia[n-1];
Linea[n+1]:=LineaPrevia[n]+LineaPrevia[n+1];
n:=n+1;
end;
end;
EscribeLinea(numero);
GuardaLinea(numero);
end;