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:
Según tengo entendido el tipo de dato Real en c++ puede ser usado como Float entonces he declarado mis variables de esta forma: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;
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:
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 formafunction f(x:real):real; begin f:=x; end;
Código:
Pero me marca un error 9 cannot convert `float' to `float ()(float)' in assignmentfloat f(float x) { f=x; return; }
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.