Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/05/2010, 13:10
elmagnificosm
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
Traduccion de c a c++ Simpson 3/8

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.