Foros del Web » Programación para mayores de 30 ;) » C/C++ »

No reconoce una funcion!

Estas en el tema de No reconoce una funcion! en el foro de C/C++ en Foros del Web. Hola de nuevo! Mi programa quiere calcular unas llamadas equaciones de colinealidad. Para eso, el programa necesita varios datos, tres de ellos son las cordenadas ...
  #1 (permalink)  
Antiguo 23/08/2008, 10:37
 
Fecha de Ingreso: agosto-2008
Mensajes: 5
Antigüedad: 15 años, 8 meses
Puntos: 0
No reconoce una funcion!

Hola de nuevo!
Mi programa quiere calcular unas llamadas equaciones de colinealidad. Para eso, el programa necesita varios datos, tres de ellos son las cordenadas del centro de proyección (Xo, Yo, Zo). Estos valores se encuentran almacenados en un fichero .txt i el programa tiene que dirigirse al programa, coger las cordenadas del primer centro de proyección y calcular dos funciones (CalculoDeX() y CalculoDeY()). Así sucesivamente hasta obtener la X e Y respectivas a cada centro de proyección del fichero.
Creo que ya tengo solucionado el tema del acceso a un fichero, pero ahora el problema se encuentra en la función que pretende acceder al fichero. El compilador no me reconoce CXo_Yo_Zo() como una función y me dice que esta declarada fuera de la clase y o esta definida. Junto con ella hay dos funciones más que si me las reconoce (CalculoDeX() y CalculoDeY()), qual es la diferencia entre ellas y CXo_Yo_Zo() ?????
-El formato de fichero és del suguiente estilo:

Xo1 Yo1 Zo1
Xo2 Yo2 Zo2
Xo3 Yo3 Zo3
... ... ...
Xon Yon Zon

-Trabajo con clases, os mando los tres ficheros.

-MAIN.CPP:

#include <cstdlib>
#include <iostream>
#include "ccolinealitat.h"
using namespace std;

int main(int argc, char *argv[])
{
CColinealitat popo;
popo.CXo_Yo_Zo ();
{
cout<< popo.CalculDe_x() << endl;
cout<< popo.CalculDe_y() << endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}

-ccolinealitat.h:



#ifndef CCOLINEALITAT_H
#define CCOLINEALITAT_H


class CColinealitat
{
public:
// class constructor
CColinealitat();
// class destructor
~CColinealitat();

double CXo_Yo_Zo();
double CalculDe_x();
double CalculDe_y();
void XTerreny( double X){ m_dX= X; };


double m_dOM, m_dPHI, m_dKP;
double m_dXo, m_dYo, m_dZo;
double m_dFocal;
double m_dx, m_dy;
double m_dRotacio[3][3];
int i,j;
double m_m11, m_m12, m_m13, m_m21, m_m22, m_m23, m_m31, m_m32, m_m33;
double llistaCentreProjeccio [6][3];

private:
double m_dX, m_dY, m_dZ;
};


#endif // CCOLINEALITAT_H


-ccolinealitat.cpp:



#include <stdio.h>
#include <stdlib.h>
#include "ccolinealitat.h" // class's header file
#include <math.h>
// class constructor
CColinealitat::CColinealitat()
{
m_dOM, m_dPHI, m_dKP= 84.32,24.85,75.42;
m_dFocal=153.28;
}

// class destructor
CColinealitat::~CColinealitat()
{
// insert your code here
}


double CColinealitat::CalculDe_x()
{
m_m11=cos(m_dOM)*cos(m_dKP);
m_m12=-cos(m_dPHI)*sin(m_dKP);
m_m13=sin(m_dPHI);
m_m21=cos(m_dOM)*sin(m_dKP)+sin(m_dOM)*sin(m_dPHI) *cos(m_dKP);
m_m22=cos(m_dOM)*cos(m_dKP)-sin(m_dOM)*sin(m_dPHI)*sin(m_dKP);
m_m23=-sin(m_dOM)*cos(m_dPHI);
m_m31=sin(m_dOM)*sin(m_dKP)-cos(m_dOM)*sin(m_dPHI)*cos(m_dKP);
m_m32=sin(m_dOM)*cos(m_dKP)+cos(m_dOM)*sin(m_dPHI) *sin(m_dKP);
m_m33=cos(m_dOM)*cos(m_dPHI);

m_dRotacio[1][1]=m_m11;
m_dRotacio[1][2]=m_m12;
m_dRotacio[1][3]=m_m13;
m_dRotacio[2][1]=m_m21;
m_dRotacio[2][2]=m_m22;
m_dRotacio[2][3]=m_m23;
m_dRotacio[3][1]=m_m31;
m_dRotacio[3][2]=m_m32;
m_dRotacio[3][3]=m_m33;


m_dx= m_dFocal*(m_m11*(m_dX-m_dXo)+m_m12*(m_dY-m_dYo)+m_m13*(m_dZ-m_dZo))/(m_m31*(m_dX-m_dXo)+m_m32*(m_dY-m_dYo)+m_m33*(m_dZ-m_dZo));



return m_dx;


}



double CColinealitat::CalculDe_y()
{
m_m11=cos(m_dOM)*cos(m_dKP);
m_m12=-cos(m_dPHI)*sin(m_dKP);
m_m13=sin(m_dPHI);
m_m21=cos(m_dOM)*sin(m_dKP)+sin(m_dOM)*sin(m_dPHI) *cos(m_dKP);
m_m22=cos(m_dOM)*cos(m_dKP)-sin(m_dOM)*sin(m_dPHI)*sin(m_dKP);
m_m23=-sin(m_dOM)*cos(m_dPHI);
m_m31=sin(m_dOM)*sin(m_dKP)-cos(m_dOM)*sin(m_dPHI)*cos(m_dKP);
m_m32=sin(m_dOM)*cos(m_dKP)+cos(m_dOM)*sin(m_dPHI) *sin(m_dKP);
m_m33=cos(m_dOM)*cos(m_dPHI);

m_dRotacio[1][1]=m_m11;
m_dRotacio[1][2]=m_m12;
m_dRotacio[1][3]=m_m13;
m_dRotacio[2][1]=m_m21;
m_dRotacio[2][2]=m_m22;
m_dRotacio[2][3]=m_m23;
m_dRotacio[3][1]=m_m31;
m_dRotacio[3][2]=m_m32;
m_dRotacio[3][3]=m_m33;


m_dy= m_dFocal*( m_m21*(m_dX-m_dXo)+m_m22*(m_dY-m_dYo)+m_m23*(m_dZ-m_dZo) )/(m_m31*(m_dX-m_dXo)+m_m32*(m_dY-m_dYo)+m_m33*(m_dZ-m_dZo));


return m_dy;
}

double CColinealitat::CXo_Yo_Zo();
{
ifstream inCoordenades [6][3] ("CoordenadesDelCentreProjeccio.txt", ios::in);
if (!inCoordenades)
{
cerr<<"No se puede abrir el fichero"<<endl;
exit(1);
}

for (i=0;i<6;i++){
for(j=0;j<3;j++){
inCoordenades >> llistaCentreProjeccio [i][0]=m_dXo;
inCoordenades >> llistaCentreProjeccio [i][1]=m_dYo;
inCoordenades >> llistaCentreProjeccio [i][2]=m_dZo;
}
}
return m_dXo, m_dYo, m_dZo;



}

Graciaaas a todos!!!
  #2 (permalink)  
Antiguo 23/08/2008, 16:41
 
Fecha de Ingreso: junio-2008
Mensajes: 63
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: No reconoce una funcion!

Veo un ; en la declaración de la función "CColinealitat::CXo_Yo_Zo" ¿será eso?.
Y de paso ¿por qué declaras el archivo como una matriz? ( ifstream inCoordenades [6][3] ) ¿no debería ser simplemente: ifstream inCoordenades("CoordenadesDelCentreProjeccio.txt", ios::in);?

Código:
double CColinealitat::CXo_Yo_Zo();
{
ifstream inCoordenades [6][3] ("CoordenadesDelCentreProjeccio.txt", ios::in);
if (!inCoordenades)
...
  #3 (permalink)  
Antiguo 24/08/2008, 11:56
 
Fecha de Ingreso: agosto-2008
Mensajes: 5
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: No reconoce una funcion!

Gracias yackcae y el resto también!

Para declarar un objeto ifstream para entrada en un archivo debo colocar el archivo de encabezamiento <fstream>, pero porque el compilador me dice 'ifstream' undeclared (first use this function) ??, se debe añadir algun tipo de comentario en el fichero .hpp???


double CColinealitat::TrobaX_Y()
{
ifstream inCoordenades ("CoordenadesTerreny.txt", ios::in);
if (!inCoordenades)
{
cerr<<"No es pot obrir el fitxer"<<endl;
exit(1);
}

for (i=0;i<6;i++){
for(j=0;j<3;j++){
inCoordenades >> CoordenadesPunsTerreny [i][0]=m_dX;
inCoordenades >> CoordenadesPunsTerreny [i][1]=m_dY;
inCoordenades >> CoordenadesPunsTerreny [i][2]=m_dZ;
}
}
return m_dX, m_dY, m_dZ;



}


Gracias!!!!!
  #4 (permalink)  
Antiguo 24/08/2008, 14:38
 
Fecha de Ingreso: junio-2008
Mensajes: 63
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: No reconoce una funcion!

Cita:
porque el compilador me dice 'ifstream' undeclared (first use this function) ??, se debe añadir algun tipo de comentario en el fichero .hpp???
ifstream está declarado en std por lo que debes especificar el uso de std:

Código:
using namespace std;
o también puedes hacer:

Código:
std::ifstream
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:30.