next up previous
Next: Trazado con gnuplot Up: Sesión 2. Freefem y Previous: Archivo triangulación

Lectura del archivo triangulación

En C el equivalente del record Pascal se llama el struct. En C++ es la classe. Es así como para una triangulacion, hecha de vértices y def triángulos, definiremos las clases siguientes:

// archivo leemalla.cpp
#include <iostream.h>
#include <fstream.h>
//DECLARACIONES
class Vertice { public: float x,y; int where;};
class Triangulo { public: int v[3]; int where;};
class Triangulacion { 
public:
    int nv,nt;
    Vertice* v;
    Triangulo* t;
    Triangulacion(const char* path);
};
//IMPLEMENTACIONES
Triangulacion::Triangulacion (const char* path)
{
    int i,j,k,i1;
    ifstream file(path); 
    file >> nv >>nt;
    v = new Vertice[nv];
    t = new Triangulo[nt];
    for( i=0; i<nv; i++) 
        file >> v[i].x >> v[i].y >> v[i].where;
    for( j=0; j<nt; j++){
        for( k=0; k<3;k++) { file >> i1; t[j].v[k] = --i1;}
        file >> t[j].where;
    }
    file.close();
}
void main()
{  
    Triangulacion g("micro.msh");
}

REMARQUE 1  

Se ha restado 1 a los números de los vértices leidos para t[j].v[k] escriviendo "- -i1". Esto es porque los arreglos en C/C++ comienzan en 0 y no en 1 como en FORTRAN. Adoptaremos la convención FORTRAN para los archivos. Esto es porque los programadores C/C++ conocen esta dificultad en cambio no ocurre lo mismo con los programadores FORTRAN.


next up previous
Next: Trazado con gnuplot Up: Sesión 2. Freefem y Previous: Archivo triangulación
Jorge San Martin
1998-11-10