Программа работает с учётом того, что если первый элемент отрицательный, то он умножается сам на себя и потом все последующие элементы умножаются уже на новый первый элемент в массиве, который умножился сам на себя. Так что такие большие цифры обусловлены именно этим.
#include <iostream>
#include <time.h>
using namespace std;
void print_array(int** arr, int n, int m) {
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < m; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
cout << endl;
}
int** auto_input_matrix(int** arr, int n, int m) {
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < m; j++) {
arr[i][j] = rand() % 200 - 100;
}
}
return arr;
}
int** multiplying_negative_elements_of_an_array_by_the_first_element(int** arr, int n, int m) {
for (size_t i = 0; i < n; i++) {
for (size_t j = 0; j < m; j++) {
if (arr[i][j] < 0) {
arr[i][j] = arr[i][j] * arr[i][0];
}
}
}
return arr;
}
int main() {
srand(time(NULL));
setlocale(LC_ALL, "Russian");
int n, m;
cout << "Введите количество строк в массиве: ";
cin >> n;
cout << "Введите количество элементов в массиве построчно: ";
cin >> m;
int** array = new int*[n];
for (size_t i = 0; i < n; i++) {
array[i] = new int[m];
}
array = auto_input_matrix(array, n, m);
print_array(array, n, m);
array = multiplying_negative_elements_of_an_array_by_the_first_element(array, n, m);
print_array(array, n, m);
delete[] array;
}