Pascal/Turbo Pascal - No puedo hacerlo, ayudenmo porfavor.

 
Vista:

No puedo hacerlo, ayudenmo porfavor.

Publicado por valeria Huerta (1 intervención) el 04/05/2010 18:35:04
el enunciado del problema dice asi:

4. Implemente la función e imprima los valores de f(x) para x= -100...100 siendo f definida por
x! x>=5
f(x) x^3-x^2 5>x>-5
x^x otro caso

lo que pude desarrollar yo es esto (pero no compila):
program funcion;
uses crt;
var
x:integer;
f,y: real;

function f(x:integer):real;
var
begin
if(f(x)>=5) then
f:= x!;
if (-5<f(x)<5) then
f:=x^3+x^2
else
f:=x^x
end;
begin
clrscr;
write('ingrese x:')
for:= -100 to 100 do
begin
y:= f(x)
end;
end.
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:No puedo hacerlo, ayudenmo porfavor.

Publicado por gustavo (1 intervención) el 05/05/2010 00:36:04
introducir 2 numeros enteros y positivos y en las variables
resul1. desplegar la division entera del mayor sobre el menor
residuo. desplegar el residuo del mayor sobre el menor
sin usar mod,div.
resul2 desplegar el producto de a*b
sin usar producto
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:No puedo hacerlo, ayudenmo porfavor.

Publicado por Capitan Kirk (4 intervenciones) el 05/05/2010 10:05:53
A primera vista, veo algunos errores:

1. La función factorial no existe en Pascal, tendrás que implementarla. Es muy fácil a partir de la definición del factorial, tanto si lo haces de manera recursiva como si no.

2. En la función que has puesto, estás haciendo las comparaciones con f(x), cuando deberías hacerlas con x. Tal como has enunciado el problema, deberías haber puesto: if (x >= 5) .... , es decir, donde comparas con f(x) debes comparar con x.

3. En la segunda comparación, no puedes encadenar las comparaciones. Matemáticamente, es correcto poner if (-5 < x < 5) si quieres comprobar que x está entre -5 y 5, pero en programación te lo va a evaluar de este modo:
Primero, evalúa -5<x. El resultado será TRUE si es así, o FALSE en caso contrario. Este resultado (1 ó 0, normalmente) te lo compara con 5, con lo cual el resultado final siempres será TRUE. En programación, las comparaciones de este tipo debes hacerlas de una en una, de este modo:

if ((-5 < x) AND (x < 5)) ...

Otras consideraciones:

1. El número máximo del que puedes calcular el factorial es 13 si trabajas con enteros de 32 bits, 34 si trabajas con float de 32 bits (simple precision) y 170 si trabajas con float de 64 bits (doble precision). A partir de ahí, debido a desbordamiento, obtendrás valores sin sentido ó errores por overflow.

2. Para la función x^x puedes llegar a 26 con float de 32 bits y 170 con float de 64 bits. Ten en cuenta que la exponenciación, cuando la base es negativa, solamente tiene sentido si el exponente es un número entero.

Saludos,
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