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

Ayuda! Matrices!

Estas en el tema de Ayuda! Matrices! en el foro de C/C++ en Foros del Web. Hola a todos, soy nueva en esto y creo que con el mensaje de antes no me he explicado lo suficiente. Allá va otro intento. ...
  #1 (permalink)  
Antiguo 22/08/2008, 10:49
 
Fecha de Ingreso: agosto-2008
Mensajes: 5
Antigüedad: 15 años, 8 meses
Puntos: 0
Ayuda! Matrices!

Hola a todos, soy nueva en esto y creo que con el mensaje de antes no me he explicado lo suficiente. Allá va otro intento.
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 el problema se encuentra en el acceso al fichero. Como lo puedo resolver??

-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 <fstream>
#include "ccolinealitat.h"
using namespace std;

int main()
{
CColinealitat popo;


void printArray(int inCoordenades [][3]);

cout<<"X= "<< popo.CalculDe_x() << endl;
cout<<"Y= "<< popo.CalculDe_y() << endl;

system("PAUSE");
return EXIT_SUCCESS;
}


-ARCHIVO.CPP (ccolinealitat.cpp):

#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#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;
i=j=0.0;
}

// class destructor
CColinealitat::~CColinealitat()
{
// insert your code here
}
double CColinealitat::CoordCentreProjeccio()
{
ifstream inCoordenades ("CordenadasDelCentroProyeccion.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[i][j]=m_dXo;
inCoordenades[i][j]=m_dYo;
inCoordenades[i][j]=m_dZo;
}
}
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;
}


- ARCHIVO.HPP (ccolinealitat.h):

#ifndef CCOLINEALITAT_H
#define CCOLINEALITAT_H


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

double CalculDe_x();
double CalculDe_y();
double CColinealitat::CoordCentreProjeccio();
int i,j;
int inCoordenades;
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];
double m_m11, m_m12, m_m13, m_m21, m_m22, m_m23, m_m31, m_m32, m_m33;

private:
double m_dX, m_dY, m_dZ;

};

#endif // CCOLINEALITAT_H




Os agradezco vuestra ayudaa! Muchas gracias!!!!!!!!!!!!!!!!!!!!
  #2 (permalink)  
Antiguo 22/08/2008, 19:04
 
Fecha de Ingreso: junio-2008
Mensajes: 63
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Ayuda! Matrices!

En la función "CColinealitat::CoordCentreProjeccio" se te ha pasado un ';'

Código:
...
ifstream inCoordenades ("CordenadasDelCentroProyeccion.txt", ios::in);
if (!inCoordenades); // Justo aquí, no va el punto y coma
{
...
Y en la parte de la lectura del archivo no sería algo como esto:
Código:
	int x[6][3];
	for (int i=0;i<6;i++) {
		for(int j=0;j<3;j++) {
			inCoordenades >> x[i][j];
		}
	}
Además las funciones "CColinealitat::CalculDe_x" y "CColinealitat::CalculDe_y" están declaradas dentro de la función "CColinealitat::CoordCentreProjeccio", aunque creo que esto ha debido pasar al copiar y pegar el código en el foro.

PD: No he revisado todo el código, solo ví la función de lectura del archivo, porque has dicho que es ahí donde está el problema.
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 09:56.