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!