Ошибка сегментации 11: при попытке ввода B [1] с помощью cin - PullRequest
0 голосов
/ 25 августа 2018

У меня проблема с запуском следующего кода.Это дает мне ошибку сегментации как ошибку времени выполнения.

#include <iostream>
using namespace std;

int main()
{
    int n;
    cout << "Enter n: ";
    cin >> n;

    float A[n][n], x[n], B[n], L[n][n], U[n][n], m[n][n], Aug[n][n + 1];

    //Initializing matrix A,L,U
    cout << "Enter A: \n";
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> A[i][j];
            U[i][j] = A[i][j];
            Aug[i][j] = A[i][j];
            if (i == j) {
                L[i][j] = 1;
            }
            else {
                L[i][j] = 0;
            }
        }
    }

    //Initialising matrix B
    cout << "Enter B: \n";
    for (int i = 0; i < n; i++) {
        cin >> B[i];
        cout << "done" << i;
        Aug[i][n] = B[i];
    }

    // ...

    return 0;
}

Ввод:

n = 2, A = {2,5, -3, -4},B = {0,0}

Ошибка возникает, когда я пытаюсь ввести B[1], поэтому done0 печатается, а done1 - нет.Я просто не могу понять, в чем причина этой ошибки, поскольку я не вижу причин, по которым B[1] будет недоступен.

1 Ответ

0 голосов
/ 25 августа 2018

Вы ошиблись в диагностике проблемы.Ошибка сегментации возникает после завершения цикла for в коде, который вы нам не показали (часть // ...).done1 не печатается, потому что ваш код дает сбой, прежде чем он сможет очистить буфер вывода.Ваш cout << "done" << i; просто помещает вещи в выходной буфер, там нечего очищать буфер.

...