[C++] Leggere matrice da file

di il
3 risposte

[C++] Leggere matrice da file

Salve ragazzi. Ho già letto diverse discussioni qui sul forum ma non mi hanno aiutato a trovare l'errore nel mio programma. In pratica, la stampa della matrice dà valori sballati. Vi posto il codice:

#include <iostream>
#include <fstream>
#include <string.h>
#include <math.h>
using namespace std;

bool read_file (int **&mat, int &dim, string path, ifstream &file);
void dealloc (int **&mat, int dim);

int main () {

ifstream file;
int **mat;
int dim=0;
string path;
bool error;

do {
    error=read_file(mat, dim, path, file);
    if (error) {
        cout << "Percorso errato. ";
    }
}while (error);

dealloc(mat, dim);
return 0;
}

bool read_file(int **&mat, int &dim, string path, ifstream &file) {

cout << "Inserisci il nome del percorso:\n";
cin >> path;

file.open(path);
if (!file) {
    return true;
}

int tmp=0;
while (!file.eof()) {
    file >> tmp;
    dim++;
}
dim= sqrt(dim);
cout << "L'ordine di grandezza e': " << dim << ".\n";

file.seekg(0, file.beg);

int i, j;
mat= new int *[dim];
for (i=0; i<dim; i++) {
    mat[i]=new int [dim];
}

for (i=0; i<dim; i++) {
    for (j=0; j<dim; j++) {
        file >> mat[i][j];
        cout << mat[i][j] << " ";
    }
    cout << endl;
}

return false;
file.close();
}

void dealloc(int **&mat, int dim) {

for (int i=0; i<dim; i++) {
    delete [] mat[i];
}
delete [] mat;

}
Teoricamente, il file da cui vado a leggere è un file di testo del tipo:
1 44 338 3 38 9 48 3 38 37 2 1 484 3 38 2 
Sono sicuro che la soluzione del problema sia sotto i miei occhi ma è da oggi che continuo a cercare di capire quale sia . Sono (quasi) sicuro che il problema non sia perché il cursore va oltre l'eof, ma altre motivazioni non mi vengono. Ho anche provato ad allocare staticamente la matrice ma mi restituiva lo stesso problema, talvolta restituendo una matrice di soli zero. Un saluto e un ringraziamento a chiunque mi aiuterà!
PS: la matrice è quadrata.

3 Risposte

  • Re: [C++] Leggere matrice da file

    Non ho avuto errori con il codice e i dati che hai presentato.
  • Re: [C++] Leggere matrice da file

    oregon ha scritto:


    Non ho avuto errori con il codice e i dati che hai presentato.
    Ciao Oregon e grazie per la risposta. Allora, come sospettavo, potrebbe essere un problema di compilatore? Io programmo su Windows con Code Blocks e MinGW come compilatore. Avresti altro da consigliarmi? Tu cosa usi?
  • Re: [C++] Leggere matrice da file

    Windows visual studio
Devi accedere o registrarti per scrivere nel forum
3 risposte