Не могу организовать ввод в c ++.выход, ошибка сегментации - PullRequest
0 голосов
/ 22 сентября 2019
int main(){
  freopen("input.txt", "r", stdin); 
  freopen("output.txt", "w", stdout);
  int N;
  long int ** inp;

  scanf("%d",&N);

  inp = (long int **)malloc((4*N)*sizeof(long int));
  for(int i=0; i<4*N;i++){
    inp[i] = (long int *)malloc((N)*sizeof(long int));
    for (int j =0; j<N;j++){
      scanf("%ld",&inp[i][j]);
    }
  }

  Matrix A(N);
  Matrix B(N);
  Matrix C(N);
  Matrix D(N);


  for(int i =0; i<N; i++){
    for(int j=0; j<N; j++){
      A.Matr[i][j]=inp[i][j];
    }
  }

  for(int i =N; i<2*N; i++){
    for(int j=0; j<N; j++){
      B.Matr[i][j]=inp[i][j];
    }
  }

  for(int i =2*N; i<3*N; i++){
    for(int j=0; j<N; j++){
      C.Matr[i][j]=inp[i][j];
    }
  }

  for(int i =3*N; i<4*N; i++){
    for(int j=0; j<N; j++){
      D.Matr[i][j]=inp[i][j];
    }
  }

  A.Display();
  cout << "\n";
  B.Display();



  return 0;
}

Я сделал матричный ООП класс, и он работает правильно, я пытаюсь прочитать данные для работы с ним.У меня проблема с чтением данных из файла.В первой строке у меня есть N, которое является размером матрицы, затем у меня есть 4 * N строк, которые описывают 4 (NxN) матрицы.input.txt выглядит следующим образом:

2
1 2
2 1
1 0
0 1
5 6
3 -2
1 2
3 4

После выполнения кода у меня появляется эта ошибка: «выход, ошибка сегментации», и я понятия не имею, как ее исправить.Я предполагаю, что что-то не так с распределением памяти и использованием старых функций из C, но я не знаю, что именно с ним не так.

...