Как заменить подсчет суммы элементов столбца подсчетом суммы элементов строки?

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int n, m, c, sum = 0;
    printf("Enter the number of rows and columns in the array: ");
    scanf("%d %d", &n, &m);
    int *arr = malloc(n * m * sizeof(int));
    if (arr == NULL) {
        printf("ERROR. Unable to allocate memory for the array\n");
        return 1;
    }
    printf("Enter the rows values: \n");
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            scanf("%d", &arr[i * m + j]);
        }
    }
    printf("Matrix:\n");
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            printf("%d ", arr[i * m + j]);
        }
        printf("\n");
    }
    printf("Enter the row number to calculate its sum:\n");
    scanf("%d", &c);
    if(c <= 0 || c > n){
        printf("Error: this row does not exist\n");
    }
    else{
        printf("The sum of %d array is:\n", c);
        for (int i = 0; i < m; i++) {
            int j = c-1;
            sum += (arr[i * n + j]);
        }
        printf("%d\n", sum);
    }
    free(arr);
    return 0;
}

Ответы (1 шт):

Автор решения: Harry

Не вдавался в верность всего кода, но если ваш код работает, то

    printf("The sum of %d array is:\n", c);
    for (int i = 0; i < m; i++) {
        int j = c-1;
        sum += (arr[i * n + j]);
    }
    printf("%d\n", sum);

надо поменять на

    printf("The sum of %d array is:\n", c);
    for (int j = 0; j < m; j++) {
        sum += arr[c * n + j];
    }
    printf("%d\n", sum);

Если нумерация с 0; если с 1 — то

    printf("The sum of %d array is:\n", c);
    for (int j = 0; j < m; j++) {
        sum += arr[c * n - n + j];
    }
    printf("%d\n", sum);
→ Ссылка