Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/07/2015, 11:57
Avatar de dryant
dryant
 
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
pasar archivo csv a matriz en c++

Hola!

Para un trabajo de la universidad tengo lo siguiente:
Un archivo dat (en realidad es un csv que se le ha cambiado la extension a dat) con los datos asi:

1;-1;-1;344;244;-1;-1115;920;-1
2;-1;350;-1;-1; ... .... sigue y sigue

Es una matriz de adyacencia para un ejercicio de caminos minimos en DIJSKTRA.

Lo que necesito es pasar dicho archivo a una matriz dentro del programa para seguir trabajando con ella, y me esta costando ya mas de lo que me esperaba.
Yo lo que tengo es lo siguiente:
Código:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(int argc, const char * argv[])
{
    string matrizAdyacencia[400];
    ifstream fmatriz;
    fmatriz.open("matrizInt.dat");  //Matriz que cada fila es: 1;-1;-1;244;... etc siendo -1 infinito.

    
    if (fmatriz.good()) {
        cout << "el fichero se ha abierto correctamente" << endl;
    }
    
    if (fmatriz.fail()) {
        cout << "ERROR abriendo el fichero" << endl;
    }
    
    int i=0;
    string texto;
    string linea;
    
    while (!fmatriz.eof()) {
        getline(fmatriz, texto, ';');
        matrizAdyacencia[i]=texto;
        cout << matrizAdyacencia[i] << "  " ;
        i++;
    }
    
    fmatriz.close();
    
    
    return 0;
}
Lo he puesto en principio como vector porque no se me ocurria como hacerlos como matriz, y aún así tampoco funciona correctamente ya que cuando llega al final de la linea, en vez de pasar a otra celda, almacena en la misma celda el ultimo digito, el salto de linea y el primer digito de la siguietne linea...

Alguna idea de como hacerlo?
Saludos y gracias!
__________________
Tecnología y tutoriales