elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda al leer archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda al leer archivo  (Leído 2,107 veces)
mnd00003

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda al leer archivo
« en: 8 Octubre 2014, 11:26 am »

Buenas, necesito leer un archivo con los datos de dos matrices, el archivo contiene en primer lugar el numero de elementos(n), es decir la matrices serían de n x n , despues de una linea en blanco tengo los datos de la primera matriz separados por filas y con espacios en blanco entre columnas, el problema me surge con la segunda matriz, que también tiene los datos separados por filas, pero entre columnas el número de espacios en blanco entre datos de las distintas columnas varía, mi duda es cómo puedo obtener los datos de la matriz eliminando esos espacios en blanco. Aqui dejo un ejemplo de un archivo:

2

53 66
73 75

 47   348 
7  71

La primera matriz he conseguido rellenarla con el código siguiente, pero no conozco la manera de rellenar la segunda eliminando los espacios en blanco, a ver si alguien puede echarme una manita :D Gracias!

Código:
int main(int argc, char** argv) {

    int tam;

    string filename = "bur26a.csv";
    string entrada;
    ifstream fi;
    stringstream ss;
    fi.open(filename.c_str());
    if (fi.good()) {
       
        getline(fi, entrada);
        ss.str(entrada);
        ss>>tam;
        int m1[tam][tam];
        int m2[tam][tam];
        getline(fi, entrada); // Elimino fila vacía
        for (int k = 1; k <= tam; k++) {
             
                for (int i = 0; i < tam; i++) {
                    getline(fi,entrada);
                    ss.str(entrada);
                    for (int j = 0; j < tam; j++) {
                        ss >> m1[i][j];
                        ss.ignore(1);                     
                    }
                }
            }

        }
       
       

    }

}
fi.close();


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda al leer archivo
« Respuesta #1 en: 13 Octubre 2014, 18:13 pm »

Lo primero que debes hacer es verificar el numero de llaves ya que tal como esta tu fragmento las ultimas dos lineas:
Código
  1. }
  2. fi.close();
Están fuera de la función main.

Ademas:

* Si no utilizas los argumentos pasados mediante la linea de comandos eliminalos, deja la definición de la función como "int main() ...".

* Si la declaración de los arrays m1 y m2 funciona depende del compilador utilizado, no es parte del estándar de C++ (para el caso utilizar objetos de la clase vector).

* Ya que todo lo que lees del archivo son valores de tipo int no es necesario leer por linea con getline, en su lugar utiliza directamente el operador ">>".

* Para leer la primera matriz utilizas tres bucles cuando solo necesitas dos.

Para leer mediante un objeto de la clase vector la primera matriz el código fuente seria mas o menos así:
Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4.  
  5. using namespace::std;
  6.  
  7. int main()
  8. {
  9.   ifstream fi("bur26a.csv");
  10.  
  11.   if (fi.good()){
  12.      int num_elem;
  13.      fi >> num_elem;
  14.      vector< vector<int> > mat(num_elem, vector<int>(num_elem));
  15.  
  16.      for (int i = 0; i != num_elem; ++i)
  17.         for (int j = 0; j != num_elem; ++j)
  18.            fi >> mat[i][j];
  19.      fi.close();
  20.  
  21.      for (int i = 0; i != num_elem; ++i){
  22.         for (int j = 0; j != num_elem; ++j)
  23.            cout << ' ' << mat[i][j];
  24.  
  25.         cout << endl;
  26.      }
  27.   }
  28.  
  29.   return 0;
  30. }

Para leer la segunda matriz el proceso es similar.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] ¿Cómo leer un archivo midi? « 1 2 »
Programación Visual Basic
Topyr 14 13,311 Último mensaje 20 Octubre 2008, 19:36 pm
por APOKLIPTICO
AYUDA CON BAT, LEER NOMBRE DE ARCHIVO...
Scripting
elecktra 3 3,104 Último mensaje 28 Noviembre 2008, 00:56 am
por Darioxhcx
Ayuda con BAT leer Archivo « 1 2 3 4 »
Scripting
elecktra 30 25,443 Último mensaje 9 Octubre 2009, 05:27 am
por Aranguez
Ayuda a leer y modificar Bytes de un Archivo
.NET (C#, VB.NET, ASP)
adan-2994 4 6,293 Último mensaje 7 Agosto 2011, 02:52 am
por adan-2994
ayuda con mi codigo, leer de un archivo en c
Programación C/C++
yeah_2796 0 1,696 Último mensaje 28 Mayo 2015, 23:17 pm
por yeah_2796
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines