2016-12-14 1 views
0

Screenshot of the error code Я пытаюсь понять, почему моя программа не работает так, как должна. Это программа, которая должна создать матрицу Вандермонда, но она становится последней цифрой неправильно, и я действительно не понимаю, почему это происходит. Я прошел через это вручную (вы знаете, проверяете, что делает компьютер и записывая его на бумаге), и я действительно не вижу, где он идет.Где моя программа-матрица Vandermonde ошибочна?

Спасибо заранее!

#include <iostream> 
#include <vector> 
#include <math.h> 


int main() 
{ 
    int n, m; 
    std::cin >> m; 
    std::cin >> n; 

    double x[m]; 

    for (int l = 0; l < m; l++) //fill in x-es 
    { 
     double f; 
     std::cin >> f; 
     x[l] = f; 
    } 


    std::vector<std::vector<double> > mat (n , std::vector<double>(m, 0)); 

    for (int i = 0; i < m; i++) //creat matrix 
     for (int j = 0; j < n; j++) 
      { 
       mat [i][j] = pow(x[i] , j); 
      } 

    for (int i = 0 ; i < m ; ++i) 
    { 
     for (int j = 0 ; j < n ; ++j) 
      std::cout << mat [ i ] [ j ] << " " ; 

       std::cout << "\n" ; 
    } 

    return 0; 
} 
+0

его дает правильное решение. – user1438832

+0

@ user1438832 Серьезно? 'Потому что я работаю в кодовой книге, и это дает мне неправильные результаты. Я пошлю скриншот. – Yalom

+0

std :: vector > mat (m, std :: vector (n, 0)); – user1438832

ответ

1

Заменить std::vector<std::vector<double> > mat (n , std::vector<double>(m, 0)); с std::vector<std::vector<double> > mat (m , std::vector<double>(n, 0));

Он будет работать нормально

+0

Ничего себе, это действительно wrok. Но почему? – Yalom

+0

раньше вы создавали матрицу порядка n x m для хранения элементов матрицы порядка m x n. Недопустимый доступ к памяти для цикла Для примера. m = 3 и n = 4. матрица должна быть порядка 3 x 4. Но вы создавали матрицу порядка 4 x 3. –

+0

Ха-ха, правда. Спасибо! Это действительно помогло! – Yalom

Смежные вопросы