Ошибка при работе с двумерными динамическими массивами "Вызвано исключение по адресу: нарушение прав доступа при записи по адресу ". C++
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <ctype.h>
#include <stdio.h>
#include <vector>
using namespace std;int main()
{
int i;
int n;
int k, g = 0;
cin >> i >> n;
int**a = new int*[i];
for (int c = 0; c < i; c++)
{
a[i] = new int[n];
}
int* line = new int[i * n];
for (int p = 0; p < i; p++)
{
for (int q = 0; q < n; q++)
{
a[p][q] = rand() % 100;
line[g] = a[p][q];
g++;
}
}
for (int p = 0; p < i * n; p++)
{
for (int u = 0; u < (i * n) - 1; u++)
{
if (line[u] > line[u + 1])
{
k = line[u];//
line[u] = line[u + 1];
line[u + 1] = k;
}
}
}
g = 0;
for (int p = 0; p < i; p++)
{
for (int q = 0; q < n; q++)
{
a[p][q] = line[g];
g++;
cout << a[p][q] << " ";
}
cout << endl;
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Как минимум
for (int c = 0; c < i; c++)
{
a[i] = new int[n];
}
Видите? i раз присваиваете значение одному и тому же элементу за пределами массива.
Совет: именуйте переменные согласованно.
Второй совет: хоть немного смотрите своим исходники перед тем, как выставлять такие проблемы на всеобщее обозрение...