Pascal/Turbo Pascal - Duda estructura if

 
Vista:

Duda estructura if

Publicado por Rosaura Solano (4 intervenciones) el 10/03/2009 17:10:08
hola a todos
esto es urgente
una tarea

he porbado esta estructura nil veces y no sé que puede estar mal

todos las ayudas, gracias de antemano
Procedure Fact
x, fac : integer;
begin
WriteLn('Digite el numero del que desea saber su factorial : ') ;
ReadLn(x) ;
if x <=0 then
begin
fac:=0
end
else
begin
fac:= x * fac(n-1); ******* ERROR****
WriteLn('El factorial es:', fac)
end;
writeln(' ')
end.


me dice que hay un error
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda estructura if

Publicado por Miguel (159 intervenciones) el 10/03/2009 18:37:47
Primer error, te falto VAR en el procedure para declarar las variables locales.
Segundo error, fac es un entero ¿que quiciste poner con fac(n-1)?, si bien n no esta declarada (si esta declarada como variable global, no la has pasado como parametro) le estas diciendo cualquier cosa al pobre pascal, fac no es una accion ni te calcula el factorial, es simplemente un entero. El if esta bien aplicado, aunque en la accion el end final va con ; ahi esta con punto, por las dudas que despues no corra.
Si queres hacer este ejercicio te recomiendo utilizar ciclos iterativos, o recursividad, que por ahi se te puede hacer mas dificil pero a la vez es mas sencillo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda estructura if

Publicado por Alexis (44 intervenciones) el 15/03/2009 04:33:58
Cierto, te faltó colocar Var para declarar las variables locales pero el error mas grave ahi es que estas intentando hacer un procedimiento recursivo y hasta donde yo tengo entendido pascal no lo admite...

Tendras que pensar en otra forma de hacerlo, como ayuda lo unico que puedo darte es el mismo concepto de factorial ;)

6!=6x5x4x3x2x1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda estructura if

Publicado por Miguel (159 intervenciones) el 15/03/2009 06:19:11
Alexis pascal si te permite utilizar el concepto de recursividad, pero no creo que ella quizo utilizarlo, fijate que no llama dentro de el procedimiento fact al mismo procedimiento fact, sino que hace un llamado con fac que es un entero, salvo que ella haya tipeado mal y haya querido utilizar recursividad en vez de fac el llamado deberia ser con fact. En ese caso lo unico que tendria que hacer es colocar Procedure Fact FORWARD; lo que le dice a pascal que hara un llamado de un procedimiento que todavia no ha sido declarado, de todas formas sigo dudando de que haya querido hacer recursividad por que el procedimiento esta declarado sin parametros, no se le puede pasar nada, solo llamarlo... Creo que ha querido pasar lo teorico de una al lenguaje pascal...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar