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