Предмет: Информатика, автор: DeadSven11

Дан двумерный массив a, размером (n´n)(или квадратная матрица а).Найти

среднее арифметическое отрицательных элементов массива.
С++

Ответы

Автор ответа: NqVixer
1

Ответ:

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;  

}


DeadSven11: офигеть, откуда вас стольо гениев?
Похожие вопросы
Предмет: Русский язык, автор: zharenovpavel
Предмет: Математика, автор: якще
Предмет: Математика, автор: aiekaterini