Pascal/Turbo Pascal - Funciones y procedimientos como parámetros

   
Vista:

Funciones y procedimientos como parámetros

Publicado por Ana (2 intervenciones) el 07/06/2010 07:14:34
Hola, necesito que alguien me ayude con este programa porque no se compila y no sé donde está el problema, el mensaje de error me dice que el número de parámetros para la llamada a la función "AproxIntegral" es erróneo . Gracias de antemano.

PROGRAM Integracion2( input, output );

TYPE
FuncionReal = FUNCTION( x : real ) : real;

VAR
a, b : real;
n : integer;
Respuesta : char;

FUNCTION Poli( x : real ) : real;

BEGIN
Poli := sqr(x) + 1;
END;

FUNCTION AproxIntegral( Poli : FuncionReal;
a, b : real;
n : integer ) : real;
VAR
x,
Deltax,
Suma : real;
i : integer;

BEGIN
Deltax := (b-a) / n;
x := a + Deltax/2;
Suma := 0;
FOR i := 1 TO n DO
BEGIN
Suma := Suma + Poli(x) * Deltax;
x := x + Deltax
END {FOR};
AproxIntegral := Suma;
END;

BEGIN {*** Programa principal ***}
REPEAT
write( 'Introduzca los limites del intervalo: ' );
readln( a, b );
REPEAT
write( 'Introduzca el numero de subintervalos: ' );
readln( n );
writeln;
writeln( 'El area aproximada utilizando ', n:1, ' intervalos es' );
writeln( AproxIntegral(Poli, a, b, n):8:4 );
writeln;
write( 'Diferente numero de intervalos (S o N)? ' );
readln( Respuesta )
UNTIL (Respuesta = 'N') OR (Respuesta = 'n');
write( 'Diferentes limites del intervalo (S o N)? ' );
readln( Respuesta );
UNTIL (Respuesta = 'N') OR (Respuesta = 'n');
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:Funciones y procedimientos como parámetros

Publicado por Armando Fuenmayor (22 intervenciones) el 09/06/2010 15:05:39
DEBERÍAS DECIR CUAL ES EL ENUNCUADO DEL PROBLEMA PARA QUE CUALQUIERA TE PUEDA AYUDAR
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:Funciones y procedimientos como parámetros

Publicado por Ana (2 intervenciones) el 09/06/2010 19:17:04
Se trata de calcular la aproximación de la integral de una función f(x) = x² + 1 desde
x = a a x = b, que es lo mismo que calcular el área comprendida entre y = f(x), el eje X y las líneas verticales x = a y x = b, f(x) es positiva.
Se divide el intervalo [a,b] en n subintervalos, cada uno de ellos de longitud
Deltax = (b - a) / n, y entonces se forman rectángulos que tienen como base esos subintervalos y las alturas dadas por los valores de la función en los puntos medios de los subintervalos.
La aproximación a la integral será la suma de todos estos rectángulos.

El problema que tengo no es resolver el problema sino el utilizar la función
FUNCTION Poli como un parámetro. En el libro con el que estoy estudiando primero lo plantea así:

FUNCTION AproxIntegral( FUNCTION Poli( x : real ) : real;
a, b : real;
n : integer ) : real;

y luego hay una nota que dice que en Turbo Pascal, que es mi caso, la cabecera debería ser :

FUNCTION AproxIntegral( Poli : FuncionReal;
a, b : real;
n : integer ) : real;

donde FuncionReal es un identificador de tipo definido por

FuncionReal = FUNCTION( x : real ) : real;

Pero lo he hecho así y me da el error de que el número de parámetros es incorrecto cuando hago la llamada a la función AproxIntegral.
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