Подскажите как найти элемент матрицы по каждому столбцу? - C (СИ)
Формулировка задачи:
Вот код:
Помогите исправить шибки)
Так как поиск производится по всей матрице, а нужно по каждому столбцу)
Буду признателен за помощь)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 4
#define m 5
int main()
{
int X[n][m];
int B[n];
int i,j,v;
srand(time(0));
for (i=0; i<n;i++)
for (j=0; j<m;j++)
X[i][j] = rand()%50-20;
printf("Massiv \n");
for (i=0; i<m;i++) {
for (j=0; j<n;j++)
printf("%4d",X[i][j]);
printf("\n");}
printf("Massiv B \n");
for(i=0; i<n; i++) {
for(j=0; j<m; j++) {
if (X[i][j] > 0 && X[i][j]%5 == 0)
B[n] += X[i][j];}
printf ("%3d",B[n]);}
return 0;
}Решение задачи: «Подскажите как найти элемент матрицы по каждому столбцу?»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 4
#define m 5
/*
Как принято в математике, первое число - строки, второе - столбцы
Т.е. n столбцов, m строк
*/
int main()
{
int X[n][m];
int B[m];
int i,j,v;
srand(time(0));
/* Очищаем B[] */
for (i=0; i<m; i++) {B[i]=0;}
/* Рандомно забиваем масив. Последовательность не важна */
for (i=0; i<n;i++)
for (j=0; j<m;j++)
X[i][j] = rand()%50-20;
/* Выводим массив. Вывод по строчкам */
printf("Massiv \n");
for (i=0; i<n;i++) {
for (j=0; j<m;j++)
printf("%4d",X[i][j]);
printf("\n");}
/* Расчет и вывод массива B[] */
printf("Massiv B \n");
for(j=0; j<m; j++)
{
for(i=0; i<n; i++)
{
if (X[i][j] > 0 && X[i][j]%5 == 0)
B[j] += X[i][j];
}
printf ("%3d",B[j]);
}
return 0;
}
Объяснение кода листинга программы
В этом коде происходит следующее:
- Объявляются переменные:
X[n][m]- массив n на m, где n - количество строк, m - количество столбцов.B[m]- массив, в котором будут храниться суммы элементов по столбцам.i,j,v- переменные-счетчики для перебора элементов массива.
- Инициализируется массив
B[m]нулями. - Массив
X[n][m]заполняется случайными числами от -20 до 30 с шагом 5. - Выводится содержимое массива
X[n][m]построчно. - Происходит расчет суммы элементов каждого столбца массива
X[n][m]и записывается в соответствующий элемент массиваB[m]. Условие для включения элемента в сумму: он положительный и делится на 5 без остатка. - Выводится содержимое массива
B[m]по столбцам. - Код завершается, возвращая 0.