Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-07-2006
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
noe Va por buen camino
mensaje de error UNIT.OBJ

saludos a todos los del foro. Estoy haciendo un programa para calcular el metodo de simpson y al compilar me manda el siguiente mensaje de error:


[Linker Error] Unresolved external 'f(float)' referenced from C:\SIMPSON\UNIT1.OBJ

no saben a que se debe esto.... les agradecere cualquier ayuda

saludos y gracias de antemano
atte Noe
Responder Con Cita
  #2  
Antiguo 17-07-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Pues pareciera que te muestra el error por alguna variable declarada tipo float.

saludos.
Responder Con Cita
  #3  
Antiguo 17-07-2006
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
noe Va por buen camino
Question

Bueno agradezco tu interes nemesio. Te agradecere si me puedes ayudar un poco ya que yo programo en delphi y no en c++ builder y no le entiendo mucho con lo que respecta a la declaracion de variables. mira el codigo que tengo es el siguiente:

//---------------------------------------------------------------------------

#include <vcl.h>
#include <math.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;



//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Btn_CalcularClick(TObject *Sender)
{
float f(float x);
int n,i;
float a,b,h,s,s2,s4,x,ts2,ts4,s13,suma;
char opc;


a=b=h=s=x=s13=suma=0;
a=StrToFloat(Edt_a->Text);
b=StrToFloat(Edt_b->Text);
n=StrToFloat(Edt_Numero->Text);
do
{
if(n%2 !=0)
ShowMessage("el numero debe ser un numero par");
}while(n%2 !=0);

h=(b-a)/n;
s=f(a)+f(b);


Edt_Fa->Text=FloatToStr(f(a));
Edt_Fb->Text=FloatToStr(f(b));
Edt_h->Text=h;
Edt_s->Text=s;
Edt_x->Text=x;



/****************************SIMPSON 1/3**********************************/

//se evaluan los valor de x donde x=x+h en el intervalo (a,b)


x=a+h;

for(int i=1; i<=n-2; i++)
{
f(x);
x+=h;
}


//segun el metodo simpson 1/3 algunos valores seran 2*f(x) o 4*f(x)
x=a+h;

for(i=1; i<=n-1; i++)
{
if(i%2 == 0) //2*f(x)
{
s2=2*f(x);

ts2+=s2;
}
else //4*f(x)
{
s4=4*f(x);

ts4+=s4;
}
x+=h;
}//for
suma = (f(a)+f(b))+(ts2+ts4);
s13=(suma*h)/3;
/*************************************************************************/


Edt_Suma->Text=FloatToStr(suma);
Edt_S13->Text=FloatToStr(s13);


}
//-----------------------------------------------------------


Agradezco toda ayuda.... que variable puede ser

Bueno creo que el problema es con la funcion:
float f(float x); que declaro debajo del void, pero donde tengo que declarar eso.......

Última edición por noe fecha: 17-07-2006 a las 21:05:42.
Responder Con Cita
  #4  
Antiguo 17-07-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Pues a simple vista, no veo donde esté declarada e implementada la función f...

Corrigiendo, ya vi: float f(float x);, aquí estas declarando una función f que recibe un float y devuelve un valor del mismo tipo, pero no existe la implementación de esta función...

Algo así (solo un ejemplo):

Código:
float f(float x)
{
  /* Calculo de la función en x */
  return x * x;
}

Saludos...

Última edición por maeyanes fecha: 17-07-2006 a las 21:12:43.
Responder Con Cita
  #5  
Antiguo 18-07-2006
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
noe Va por buen camino
no funciona la declaracion

Gracias por responder... ya hice lo que me dijiste y no funciona.-
Que cosa puede ser mira yo tengo este codigo en c: y lo quiero pasar a c Builder.: que estoy pasando mal en el codigo.......


/*Este programa implememta el algoritmo de integración de simpson 1/3

//librerias a utilizar
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <math.h>

//definicon de la funcioon
float f(float x);

//programa principal
void main()
{
int n;
float a,b,h,s,s2,s4,x,ts2,ts4,s13,suma;
char opc;
do
{
a=b=h=s=x=s13=suma=0;
clrscr();
gotoxy(27,1);
cout<<"METODO DE SIMPOSON 1/3 \n\n\n";
cout<<"\t\tPrporcione los valores del intervalo [a,b] \n\n";
cout<<"Propocione el valor de a: ";
cin>>a;
cout<<"Propocione el valor de b: ";
cin>>b;
do
{
cout<<"\nPropocione el numero de puntos: ";
cin>>n;
if(n%2 !=0)
cout<<"\n\n!!!! ERROR n DEBE SER UN NUMERO PAR !!!!";
}while(n%2 !=0);

h=(b-a)/n;
s=f(a)+f(b);

cout<<"\n\nPor lo tanto...";
cout<<"\n f(a) = "<<f(a);
cout<<"\n f(b) = "<<f(b);
cout<<"\n h= "<<h;
cout<<"\n s= "<<s;
cout<<"\n x= "<<x;

/****************************SIMPSON 1/3**********************************/

//se evaluan los valor de x donde x=x+h en el intervalo (a,b)
clrscr();
gotoxy(10,1);
cout<<"EVALUACION DE f(x) CON x=x+h en el intervalo abierto
("<<a<<","<<b<<")\n\n";
cout<<"x \t\t\t f(x)\n\n";
x=a+h;
cout<<x<<"\t\t\t"<<f(x)<<"\n";
for(int i=1; i<=n-2; i++)
{
f(x);
x+=h;
cout<<x<<"\t\t\t"<<f(x)<<"\n";
}
getch();

//segun el metodo simpson 1/3 algunos valores seran 2*f(x) o 4*f(x)
clrscr();
x=a+h;
gotoxy(10,1);
cout<<"RESULTADOS DEL PRODUCTO 2*f(x) 0 4*f(x) PARA x=x+h \n\n\n";
cout<<"x\t\t\tf(x)\n\n";
for(i=1; i<=n-1; i++)
{
if(i%2 == 0) //2*f(x)
{
s2=2*f(x);
cout<<x<<"\t\t\t"<<"2*f(x)= "<<s2<<"\n";
ts2+=s2;
}
else //4*f(x)
{
s4=4*f(x);
cout<<x<<"\t\t\t"<<"4*f(x)= "<<s4<<"\n";
ts4+=s4;
}
x+=h;
}//for
suma = (f(a)+f(b))+(ts2+ts4);
s13=(suma*h)/3;
/*************************************************************************/
getch();
clrscr();
gotoxy(30,1);
cout<<"RESULTADOS \n\n\n";
cout<<" SUMA = "<<suma;
cout<<"\n\n SIMPOSON 1/3 = "<<s13;
cout<<"\n\n\n ¨ Desea evaluar la funcion en otro intervalo (s/n)?: ";
cin>>opc;
}while(opc !='n' && opc!='N');
}//main


//funcion
float f(float x)
{
return pow(x,4);
}

Ojala ,me puedas ayudar

Gracias de antemano
Responder Con Cita
  #6  
Antiguo 18-07-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
Pues ya como tienes el código corregido no veo el problema, no es necesario declarar el prototipo de la función
Código:
 float f(float x);
sino q de una vez puedes poner
Código:
float f(float x)
{ return pow(x,4);
}
en su lugar, borra el .obj y reconstruye el proyecto con Project->Build All, ya no deberías tener problema alguno.
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
  #7  
Antiguo 18-07-2006
Avatar de noe
noe noe is offline
Miembro
 
Registrado: dic 2003
Ubicación: Mexico
Posts: 111
Poder: 21
noe Va por buen camino
Gracias por contestar.

pero en donde pongo

float f(float x)
{ return pow(x,4);
}

ya que me manda error.....


Mira lo puse asi:


//---------------------------------------------------------------------------

#include <vcl.h>
#include <math.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;



//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Btn_CalcularClick(TObject *Sender)

{

int n,i;
float a,b,h,s,s2,s4,x,ts2,ts4,s13,suma;
char opc;

float f(float x);
{
return pow(x,4);
}



a=b=h=s=x=s13=suma=0;
a=StrToFloat(Edt_a->Text);
b=StrToFloat(Edt_b->Text);
n=StrToFloat(Edt_Numero->Text);
do
{
if(n%2 !=0)
ShowMessage("el numero debe ser un numero par");
}while(n%2 !=0);

h=(b-a)/n;
s=f(a)+f(b);


Edt_Fa->Text=FloatToStr(f(a));
Edt_Fb->Text=FloatToStr(f(b));
Edt_h->Text=h;
Edt_s->Text=s;
Edt_x->Text=x;



/****************************SIMPSON 1/3**********************************/

//se evaluan los valor de x donde x=x+h en el intervalo (a,b)


x=a+h;

for(int i=1; i<=n-2; i++)
{
f(x);
x+=h;
}


//segun el metodo simpson 1/3 algunos valores seran 2*f(x) o 4*f(x)
x=a+h;

for(i=1; i<=n-1; i++)
{
if(i%2 == 0) //2*f(x)
{
s2=2*f(x);

ts2+=s2;
}
else //4*f(x)
{
s4=4*f(x);

ts4+=s4;
}
x+=h;
}//for
suma = (f(a)+f(b))+(ts2+ts4);
s13=(suma*h)/3;
/*************************************************************************/


Edt_Suma->Text=FloatToStr(suma);
Edt_S13->Text=FloatToStr(s13);



}

//---------------------------------------------------------------------------



Y me manda el siguiente error:

[C++ Error] Unit1.cpp(35): E2467 '_fastcall TForm1::Btn_CalcularClick(TObject *)' cannot return a value

[C++ Warning] Unit1.cpp(39): W8066 Unreachable code
Responder Con Cita
  #8  
Antiguo 19-07-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
La función no puedes meterla dentro del evento , debes colocarla antes q la primera función q la llame, por ejemplo:
Código:
#include <vcl.h>
#include <math.h>

#pragma hdrstop
#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 float f(float x);
 { return pow(x,4);
 }
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------------


void __fastcall TForm1::Btn_CalcularClick(TObject *Sender)
{ int n,i;
  float a,b,h,s,s2,s4,x,ts2,ts4,s13,suma; 
  char opc;
  .....
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mensaje de error BDE Lakecountry Conexión con bases de datos 10 19-07-2006 17:29:48
Mensaje de error majosf Conexión con bases de datos 2 16-11-2005 20:25:46
Mensaje de error Luli Varios 3 31-10-2005 13:59:02
Mensaje de error Ana Tudela Conexión con bases de datos 1 14-09-2004 16:47:43


La franja horaria es GMT +2. Ahora son las 19:40:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi