Определить количество положительных элементов каждого столбца матрицы и занести их в массив - C (СИ)
Формулировка задачи:
Помогите пожалуйста написать программу в си на тему двумерный массив: Определить количество положительных элементов xk каждого столбца
матрицы X и переписать их в одномерный массив (вектор) M.
Решение задачи: «Определить количество положительных элементов каждого столбца матрицы и занести их в массив»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int str, colm, *M;
srand(time(NULL));
printf("Enter string, column:\n");
scanf("%d%d", &str, &colm);
int **matr = (int**)calloc(str + 1, sizeof(int*));
for (int i = 0; i < str + 1; ++i)
matr[i] = (int*)calloc(colm, sizeof(int));
M = matr[str];
for (int i = 0; i < str; ++i)
for (int j = 0; j < colm; ++j) {
matr[i][j] = -20 + rand() % 50;
if (matr[i][j] > 0)
++M[j];
}
for (int i = 0; i < str; ++i) {
for (int j = 0; j < colm; ++j)
printf("[%3d]", matr[i][j]);
printf("\n");
}
for (int i = 0; i < colm; ++i)
printf("%d colum %d positive elemnt\n", i + 1, M[i]);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
str- строка, количество строк в матрице;colm- количество столбцов в матрице;M- указатель на массив, в который будут занесены количества положительных элементов каждого столбца;matr- двумерный массив (матрица), в котором будут случайные значения;rand()% 50 - генератор случайного числа в диапазоне от 0 до 49, так как при вычислении выражения%остаток от деления на 50 будет от 0 до 49;srand(time(NULL))- инициализация генератора случайных чисел;printf()- функция вывода информации на экран;scanf()- функция ввода информации с клавиатуры;calloc()- функция выделения памяти.
- Пользователю предлагается ввести количество строк и столбцов матрицы.
- Выделяется память под матрицу и массив
M. - Заполняется матрица случайными значениями. Если элемент положительный, то к его соответствующему индексу в массиве
Mприбавляется единица. - Выводится на экран заполненная матрица.
- Выводится количество положительных элементов каждого столбца, сгенерированных в массиве
M. - Программа завершается.