Hola, como verán es mi primer Post y estoy atorado con una tarea.
Tengo que hacer el método Simpson 3/8 en c++, la cosa es que me dieron el programa en c pero estoy tendiendo problemas para entender algunas cosas y ojala me pudieran ayudar a traducirlo.
El programa en c completo es así:
Código:
program simpson 3/8;
uses ctr;
var
s1,s2,st:real;
n,c:integer;
a,b,h:real;
i:integer;
function f(x:real):real;
begin
f:=x;
end;
begin
clrscr;
writeln('Dame a,b y n, n debe ser multiplo de 3');
readln(a,b,n);
h:=(b-a)/n;
s1:=0
s2:=0
for i:=0 to n-1 do
begin
c:= i mod 3;
if c= 0 then
s1:=s1+2*f(a+i*h);
else
s2:=s2+3*f(a+i*h);
end;
st:=((3*h)/8(f(a)+s1+s2+f(b));
writeln('El area es:',st:5:8);
delay(500);
end;
Según tengo entendido el tipo de dato Real en c++ puede ser usado como Float entonces he declarado mis variables de esta forma:
int n,i,c;
float a,b,h,s1,s2,st;
Pero mi primer error viene a comprender la primer función en el programa en c dice :
Código:
function f(x:real):real;
begin
f:=x;
end;
Según lo entiendo, es una función llamada f que regresara un dato tipo real y que usara una variable x real, entonces lo traduzco en c++ de esta forma
Código:
float f(float x)
{
f=x;
return;
}
Pero me marca un error 9 cannot convert `float' to `float ()(float)' in assignment
Creo que puede tratarse de que yo estoy usando un operador = y en el programa original están usando un operador := pero no se que signifique esto.
Mi segunda duda es en el loop FOR
En el programa original dice:
for i:=0 to n-1 do
Si es un For en c++ quedaría
For (i=1;n-1;i++)
Me suena a que es más un do while pero no entiendo esa condición n-1.
Y pues eso es todo , gracias a todos y felicidades por este grandioso foro, en otras ocasiones solo había consultado pero creo que esta vez si necesito un poco de ayuda personalizada.