1 3 0 2 4 
0 4 1 3 2 
3 1 4 2 0 
1 4 3 0 2 
3 0 2 4 1 
3 2 4 0 1 
0 2 4 1 3

Tengo una matriz como esta en un .archivo txt. Ahora, ¿cómo hago para leer los datos en una int** tipo de matriz 2D en mejor forma? He buscado por toda la web pero no pudo encontrar una respuesta satisfactoria.

array_2d = new int*[5];
        for(int i = 0; i < 5; i++)
            array_2d[i] = new int[7];

        ifstream file_h(FILE_NAME_H);

        //what do do here?

        file_h.close();
InformationsquelleAutor burakongun | 2013-03-23

2 Comentarios

  1. 6

    Primero de todo, creo que debe ser la creación de un int*[] de tamaño 7, en un bucle de 1 a 7, mientras que inicializar una matriz int, de 5 de dentro del bucle.

    En ese caso, haría esto:

    array_2d = new int*[7];
    
    ifstream file(FILE_NAME_H);
    
    for (unsigned int i = 0; i < 7; i++) {
        array_2d[i] = new int[5];
    
        for (unsigned int j = 0; j < 5; j++) {
            file >> array_2d[i][j];
        }
    }

    EDITAR (Después de una cantidad considerable de tiempo):

    Alternativamente, recomiendo el uso de un vector o un array:

    std::array<std::array<int, 5>, 7> data;
    std::ifstream file(FILE_NAME_H);
    
    for (int i = 0; i < 7; ++i) {
        for (int j = 0; j < 5; ++j) {
            file >> data[i][j];
        }
    }
    • Muchas gracias. «archivo >> array_2d[i][j];» Esta línea fue todo lo que han estado pidiendo.
    • Para agregar a Magtheridon el comentario de que la matriz debe ser estructurado (7 x 5) es porque es el orden de la matriz en el archivo es el número de línea y, a continuación, por entero en cada línea (esto lógicamente coincide con el orden en el que el archivo se lee). Si usted utiliza su estructura original y bucle de i=(0 a 4) y j=(0 a 6) con «archivo >> array2d[i][j]», no se obtendrá una representación correcta de la matriz original. Usted en lugar de obtener {{1,3,0,2,4,0,4},{1,3,2,3,1,4,2},{0,1,4,3,0,2,3},{0,2,4,1,3,2,4},{0,1,0,2,4,1,3}} que no es una representación válida de la matriz 2D en su pregunta.
    • ^ +1 para explicarlo.
  2. 3
    for (int i = 0; i < n; i++) {
     for (int j = 0; j < n; j++) {
        int n;
        fscanf(pFile, "%d", &n);
        printf("(%d,%d) = %d\n", i, j, n);
        array[i][j] = n;
    }

    Espero que ayude.

    • -1 para: completamente extraño enlace de google, este debe ser un comentario y respuestas deberían de contiene consejos útiles.
    • Estos son demasiado complejas para lo que realmente necesita. Pero gracias de todos modos.
    • Y lo siento por mi respuesta tardía.

Dejar respuesta

Please enter your comment!
Please enter your name here