Дана матрица вещественных чисел N х М. Найти максимальный и минимальный элемент в каждой строке и поменять их местами

ТАКЖЕ НУЖНО НАЙТИ СУММУ ЭЛЕМЕНТОВ НА ГЛАВНОЙ ДИАГОНАЛИ. Посмотрите, кто может, где допущена ошибка(и) в коде, максимальные и минимальные элементы построчно меняет, цикл на сумму элементов главной диагонали вроде написан правильно, но в консоли выводится не сумма, а какой-то бред.

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

int main()
{
    int n, i, j, jmax, jmin;
    float a[50][50], min, max, sum = 0;

    printf("N = "); scanf_s("%d", &n);
    

    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n; j++)
        {
            a[i][j] = rand() % 10 - 5.37;
            printf("%7.3f", a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    for (i = 1; i <= n; i++)
    {
        max = a[i][1]; jmax = 1;
        min = a[i][1]; jmin = 1;
        for (j = 1; j <= n; j++)
        {
            if (a[i][j] > max)
            {
                max = a[i][j];
                jmax = j;
            }
            if (a[i][j] < min)
            {
                min = a[i][j];
                jmin = j;
            }
        }
        float tmp = a[i][jmax];
        a[i][jmax] = a[i][jmin];
        a[i][jmin] = tmp;
        for (j = 1; j <= n; j++)
            printf("%7.3f", a[i][j]);
        printf("\n");
    }
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
            if (i == j)
            {
                sum += a[i][j];
            }
    printf("Summa - %7.3f", sum);
}

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

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

во-первых где у вас инициализация переменной n - вы её используете не проинициализировав, т.е. в ней всякая хрень может быть

во-вторых в C массивы считаются от 0, а не от 1

int arr[50];
for (int i = 1; i <= 50; i++)

будет означать, что с arr[0] элементом сделано ничего не будет, а arr[50] уже выходит из диапазона 0..49

→ Ссылка