2016-08-18 3 views
0

По какой-то причине значения для каждого числа в матрице равны нулю после ввода значений из файла. Он работал, когда я инициализировал матрицу со всеми нулями, но по какой-то причине я не могу получить номера для импорта из текстового файла.Как ввести числа из файла в матрицу?

struct Vector { 
    float* els; 
    int len; 
    }; 

struct Matrix { 
    Vector* col; // col is array of Vectors; each Vector is one column of matrix 
    int ncols; // total number of columns in matrix 
}; 

...

ifstream fin("mat.def"); 
fin >> m >> n; 
fin >> M; 

...

istream& operator>>(istream& input, Matrix& mm) { 

int m,n; 
    n=mm.ncols; 

    mm.col = new Vector[n]; // use n instead m for consistency 

    for (int i=0;i<n;i++) { 
    mm.col[i].els = new float[m]; 
    for (int k=0;k<m;k++) { 
     input >> mm.col[i].els[k]; 
    } 
    } 

    return input; 
} 

ответ

0

Вы не показали какой-либо код, который устанавливает значение nm.ncols. Я предполагаю, что значение nm.cols установлено неправильно, прежде чем использовать его.

Предлагаю немного изменить стратегию. Вместо

fin >> m >> n; 
fin >> M; 

Использование

fin >> M; 

и убедитесь, что число столбцов и строк считываются в функции operator>>.

std::istream& operator>>(std::istream& input, Matrix& mm) 
{ 
    int rows; 
    input >> mm.ncols; 
    input >> rows; 

    mm.col = new Vector[mm.ncols]; 

    for (int i=0;i<mm.ncols;i++) 
    { 
     mm.col[i].len = rows; 
     mm.col[i].els = new float[rows]; 
     for (int k=0;k<rows;k++) { 
     input >> mm.col[i].els[k]; 
     } 
    } 

    return input; 
} 
Смежные вопросы