Вычислить среднее арифметическое положительных элементов матрицы, расположенных ниже...

0 голосов
99 просмотров

Вычислить среднее арифметическое положительных элементов матрицы, расположенных ниже побочной диагонали.
Задать двумерный массив размерности N*N (N вводится с клавиатуры) из целочисленных элементов, принадлежащих отрезку [-10;10]. Вычислить среднее арифметическое положительных элементов матрицы, расположенных ниже побочной диагонали. Вывести полученную матрицу в виде прямоугольной таблицы. Вывести указанные элементы. - С (СИ)


Информатика (68 баллов) | 99 просмотров
Дан 1 ответ
0 голосов

#include #include #include
/* main program fucntion */void main(){  int     iMatrSize, // size of the matrix    iSum = 0,  // sum of the nessesary elements of the matrix    iCnt = 0,  // number of the nessesary elements of the matrix    **aMatr;   // the matrix  int i, j;
  scanf_s("%i", &iMatrSize);
  /* allocation memory for the array */  aMatr = (int**)malloc(sizeof(int) * iMatrSize);  for (i = 0; i < iMatrSize; i++)  {    aMatr[i] = (int*)malloc(sizeof(int) * iMatrSize);  }
  /* filling in the array */  for (i = 0; i < iMatrSize; i++)    for (j = 0; j < iMatrSize; j++)      aMatr[i][j] = rand() % 21 - 10;
  /* counting the sum of the elements */  for (i = 0; i < iMatrSize; i++)    for (j = 0; j < iMatrSize - i - 1; j++)      iSum += aMatr[i][j], iCnt++;
  /* outputing the array */  for (i = 0; i < iMatrSize; i++)  {    for (j = 0; j < iMatrSize; j++)      printf ("%3i ", aMatr[i][j]);    printf("\n");  }
  printf("Sum = %f\n", (float)iSum / iCnt);
  _getch();} /* End of 'main' function */

(1.3k баллов)
0

элементы ниже побочной: 8,6,-6. sum=-1.666667

0

А, ниже...

0

И, как я понял, матрица задаётся не случайным образом, а всегда повторяется. Выбирал размерность 3 неск. раз, выдало все разы одну и ту же

0

Тогда в циклах напиши: for (i = 1; i < iMatrSize; i++) for (j = iMatrSize - i; j < iMatrSize; j++) ... (сейчас она выше считала)

0

Заполняется случайно, просто при последующих компиляциях значения те же получаются. Можно подключить time.h, затем написать в начале main (после объявления переменных) srand(time(NULL));

0

Как посчитать только положительные элементы? Он все считает

0

if (aMatr[i][j] >= 0)

0

Ок, сейчас разберусь, как сделать случайное заполнение

0

Благодарю

0

Не за что!