почему вывод данной программы выдаёт в ответ большие отрицательные числа?
Суть задачи: Дана действительная матрица N*N. Построить плоскость действительных чисел a1...an по правилу: если в i-й строке элемент ii < 0, то ai = sum элементов i-й строки до первого элемента < 0, иначе ai = sum последних элементов i-й строки начиная с первого по прядку неотрицательного элемента
#include <iostream>
using namespace std;
у меня выводятся большие отрицательные числа, не могу понять с чем это связано
void show_matrix(int** matrix, int n)
{
cout << "ваша матрица" << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << matrix[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
void create_matrix(int** matrix, int n)
{
for (int i = 0; i < n; i++)
{
matrix[i] = new int[n];
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << "Введите элемент матрицы ";
cin >> matrix[i][j];
}
}
cout << endl;
show_matrix(matrix, n);
}
void ar_ray(int** matrix, int n)
{
int* arr = new int[n];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (matrix[i][i] < 0)
{
for (int k = 0; k < n - 1; k++)
{
while (matrix[i][k] >= 0)
{
arr[i] = matrix[i][k] + matrix[i][k + 1];
}
}
}
else
{
for(int k = n - 1; k > 0 ; k--)
{
if (arr[i] >= 0)
{
arr[i] = matrix[i][k] + matrix[i][k - 1];
}
}
}
}
}
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
}
int main()
{
setlocale(LC_ALL, "RUS");
int n;
cout << "введите размер матрицы ";
cin >> n;`
int** matrix = new int*[n];
create_matrix(matrix, n);
ar_ray(matrix, n);
}
Источник: Stack Overflow на русском