Построить вектор, элементы которого соответственно равны значениям средних арифметических элементов строк заданной матрицы - C (СИ)
Формулировка задачи:
Написать программу на двумерный массив с использованием динамической памяти.
Дана матрица
... ... ...
Написать программы построения вектора b1, b2, ..., bm, элементы которого соответственно равны значениям средних арифметических элементов строк
Решение задачи: «Построить вектор, элементы которого соответственно равны значениям средних арифметических элементов строк заданной матрицы»
textual
Листинг программы
#include <conio.h> #include <stdio.h> #include <stdlib.h> int main() { int **arr,m,n,i,j,summ=0; float *b; printf("vvedite razmernost matrici MxN:\n"); scanf("%d%d",&m,&n); arr=(int**)malloc(m*sizeof(int*)); b=(float*)malloc(m*sizeof(float)); for(i=0;i<m;i++) { arr[i]=(int*)malloc(n*sizeof(int)); for(j=0;j<n;j++) { arr[i][j]=rand()%10; printf("%d ",arr[i][j]); summ+=arr[i][j]; } printf("\n"); b[i]=(float)summ/n; summ=0; } for(i=0;i<m;i++) printf("%f ",b[i]); getch(); return 0; }
Объяснение кода листинга программы
В этом коде:
- arr - это двумерный массив (матрица) целых чисел, который будет содержать в себе случайные числа от 0 до 9.
- m и n - это переменные, которые хранят количество строк и столбцов матрицы соответственно.
- i и j - это индексы, которые используются для прохода по всем элементам матрицы.
- summ - это переменная, которая используется для хранения суммы элементов строки.
- b - это вектор (массив), который будет содержать в себе средние арифметические элементов строк матрицы.
- Код считывает из консоли количество строк и столбцов матрицы.
- Затем он выделяет память под матрицу и вектор.
- После этого он заполняет матрицу случайными числами от 0 до 9.
- Затем он проходит по всем строкам матрицы, суммируя их элементы и сохраняя сумму в переменной summ.
- Затем он вычисляет среднее арифметическое суммы элементов строки и сохраняет его в соответствующем элементе вектора b.
- После прохода по всем строкам матрицы, код выводит на экран все элементы вектора b.
- Код завершается, когда нажимается клавиша. Код может быть оптимизирован, чтобы избежать утечек памяти, используя, например, функцию free() для освобождения памяти, выделенной под матрицу и вектор после их использования.