Дан двумерный массив a, размером (n´n)(или квадратная матрица а).Найти
среднее арифметическое отрицательных элементов массива.
С++
Ответы
Ответ:
1-й вариант с заполнением матрицы рандомными значениями от -10 до 10:
#include <iostream>
using namespace std;
int** CreateArr(int n)
{
int** arr = new int* [n];
for (int i = 0; i < n; i++) arr[i] = new int[n];
return arr;
}
void FillArr(int** arr, int n)
{
for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) arr[i][j] = -10 + rand() % 20;
}
void PrintArr(int** arr, int n)
{
cout << endl << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++) cout << "\t" << arr[i][j];
cout << endl;
}
cout << endl << endl;
}
void DeleteArr(int** arr, int n)
{
for (int i = 0; i < n; i++) delete arr[i];
delete[] arr;
}
double CalculateAvg(int** arr, int n)
{
double sum{}, numOfElems{};
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (arr[i][j] < 0)
{
sum += arr[i][j];
numOfElems++;
}
}
}
return sum / numOfElems;
}
int main()
{
srand(time(NULL));
setlocale(0, "");
int n{};
cout << "Введите размер матрицы: ";
cin >> n;
int** a = CreateArr(n);
FillArr(a, n);
cout << "\n\nМатрица:";
PrintArr(a, n);
cout << "Среднее арифметическое отрицательных элементов массива: " << CalculateAvg(a, n);
DeleteArr(a, n);
return 0;
}
2-й вариант с заполнением массива вручную:
#include <iostream>
using namespace std;
int** CreateArr(int n)
{
int** arr = new int* [n];
for (int i = 0; i < n; i++) arr[i] = new int[n];
return arr;
}
void FillArr(int** arr, int n)
{
for (int i = 0, counter = 1; i < n; i++)
{
for (int j = 0; j < n; j++, counter++)
{
cout << "\nВведите #" << counter << " элемент массива: ";
cin >> arr[i][j];
}
}
}
void PrintArr(int** arr, int n)
{
cout << endl << endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++) cout << "\t" << arr[i][j];
cout << endl;
}
cout << endl << endl;
}
void DeleteArr(int** arr, int n)
{
for (int i = 0; i < n; i++) delete arr[i];
delete[] arr;
}
double CalculateAvg(int** arr, int n)
{
double sum{}, numOfElems{};
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
if (arr[i][j] < 0)
{
sum += arr[i][j];
numOfElems++;
}
}
return sum / numOfElems;
}
int main()
{
setlocale(0, "");
int n{};
cout << "Введите размер матрицы: ";
cin >> n;
int** a = CreateArr(n);
FillArr(a, n);
cout << "\n\nМатрица:";
PrintArr(a, n);
cout << "Среднее арифметическое отрицательных элементов массива: " << CalculateAvg(a, n);
DeleteArr(a, n);
return 0;
}