Си. Создать матрицу B, элементы которой будут равны суме всех элементов A, в зарисованной области
Язык программирования Си. Создать квадратную матрицу B, элементы которой будут равны суме всех элементов A, в зарисованной области (ниже и правее).

Например:
Дана матрица
1 1 1
1 1 1
1 1 1
Результат должен быть:
9 6 3
6 4 2
3 2 1
Получился такой код, но не работает, не могу понять где ошибка. Программирую не так давно, буду очень благодарна за помощь!
#include <math.h>
#include <stdio.h>
int main() {
int i=1;
int j=1;
int N = 0;
float A[N][N];
float B[N][N];
do{ printf("Введите длинну рядка и столбца:\n");
scanf("%d", &N);
}while(N<1 || N>50);
printf("Введите элементы массива:\n");
for(int i=1; i<=N; i++){
for(int j=1; j<=N; j++){
scanf("%f", &A[i][j]); }
}
B[N][N]=A[N][N];
for (int j=N-1; j>=1; j--){
B[1][j]=B[1][j+1]+A[1][j];
}
for (i=N-1; i>=1; i--){
B[i][0]=B[i+1][0]+A[i][0];
for (j=N-1; j>=1; j--){
B[i][j]=B[i+1][j]+B[i][j+1]-B[i+1][j+1]+A[i][j];
}
}
for ( i = 1; i < N; i++ ) {
for ( j = 1; j < N; j++ )
{
printf( "[%d][%d]=%d ", i, j, B[i][j] );
}
printf( "\n" );
}
Ответы (1 шт):
Массивы нулевого размера. Если динамически не выделять память, то при Ваших ограничениях достаточно задать
int A[50][50];
int B[50][50];
Массивы ведь с нуля нумеруются, так что диапазон индексов будет от 0 до N-1.
Видимо, часть кода Вы скопировали с заполнения матрицы, начиная с левого верхнего угла, у Вас же нижняя строка сначала заполняться должна
B[N-1][N-1]=A[N-1][N-1];
for (int j=N-2; j>=0; j--){
B[N-1][j]=B[N-1][j+1]+A[N-1][j];
}
Ну главный цикл сам в порядок приводите, тщательно обдумывая, какие индексы участвовать будут