помогите в с++. программка ругаетсяДана матрица (N+15)x(N+15), если сумма чисел в

Помогите в с++. программа бранится
Дана матрица (N+15)x(N+15), если сумма чисел в первой строке больше суммы чисел в первом столбце, тогда зеркально отобразить матрицу, иначе отсортировать по возрастанию, числа генерировать нечаянно в промежутке
[-N-15; N+15].
include
include
include
include
using namespace std;

//int matrix[i][j];
//
//const int i = 15;
//const int j = 15;
//
int zd(int **mas, int N)

int sumi = 0;
int sumj = 0;
for (int i = 0; i lt; N; i++)
sumi += mas[i][0];

for (int j = 0; j lt; N; j++)
sumj += mas[j][0];


for (int i(0); i lt; N; i++)

for (int j(0); j lt; N; j++)

if (sumi gt; sumj)

cout lt;lt; " Сумма чисел в первой строке больше суммы чисел в первом столбце. Зеркальное отображение матрицы: " lt;lt; endl;
int tmp = mas[i][j];
mas[i][j] = mas[N - i - 1][j];
mas[N - i - 1][j] = tmp;

else

if (mas[j] gt; mas[j + 1])

cout lt;lt; " Сумма чисел в первом столбце больше суммы чисел в первой строке. Сортировка по возростанию: " lt;lt; endl;
int smp = mas[j][0];
mas[j] = mas[j + 1];
*mas[j + 1] = smp;




return **mas;

int main()

setlocale(LC_ALL, "Russian");
int N;
cout lt;lt; "Введите размерность матрицы: ";
cin gt;gt; N;
// создание массива
int **mas = new int*[N];
for (int i(0); i lt; N; i++)

mas[i] = new int[N];

// наполнение массива
cout lt;lt; " Заполненный массив: " lt;lt; endl;
for (int i(0); i lt; N; i++)

for (int j(0); j lt; N; j++)

mas[i][j] = rand() % 21 - 5;
cout lt;lt; mas[i][j] lt;lt; endl;

cout lt;lt; endl;


zd(mas, N); // задание
// освобождение массива
for (int i = 0; i lt; N; i++)

delete[] mas[i];

delete[] mas;
system("PAUSE");
return 0;

Задать свой вопрос
Олег Смойкин
а на что ругается и на какую строку?
Букштынович Павел
строчка 46. Необработанное исключение по адресу 0x013B2951 в Project1.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFDFD.
Darina Vlasova Volgina
исключение не обработано
1 ответ

С 36 строчки и дальше:


if (mas[j] gt; mas[j + 1]) // Сравниваем указатели на строчки??

cout lt;lt; " Сумма чисел в первом столбце больше суммы чисел в первой строке. Сортировка по возростанию: " lt;lt; endl;

int smp = mas[j][0];

mas[j] = mas[j + 1];

*mas[j + 1] = smp; // Присваиваем число указателю?

Леонид Шибаршин
j+1 кстати тоже страшная вещь, потому что можно выйти за границу массива
Леонид Борщев
1-ое это: если сумма чисел в первой строке больше суммы чисел в первом столбце, тогда зеркально показать матрицу, по другому отсортировать по возрастанию, числа генерировать случайно в промежутке
Polina Palkina
В любом случае, mas у тебя же матрица, и к элементам ты обращаешься как mas[i][j]. Обращение mas[x] возвратит только указатель на массив, который является строчкой матрицы, и сопоставлять этот указатель с чем-или не совершенно корректно.
Илюшка Дрюбин
а как тогда переписать?
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт