min и max в матрице

Хотел вывести минимальное и максимальное значение матрицы, в итоге, как всегда, все пошло не по плану. Самое главное условие задачки в том, что нужно организовать динамическую матрицу, используя динамическое выделение памяти(что вроде бы сделал). Матрицу вроде бы читает правильно, если принтом вывести всю матрицу, то все в порядке, однако min и max корректно код выводить не собирается. Думаю ошибка заключается как раз таки в последних принтах.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <locale.h>;
int main()
{
    setlocale(LC_ALL, "Rus");
    int* a;
    int i, j, n, m;
    printf("Введите количество строк: ");
    scanf_s("%d", &n);
    printf("Введите количество столбцов: ");
    scanf_s("%d", &m);
    a = (int*)malloc(n * m * sizeof(int));
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            printf("a[%d][%d] = ", i, j);
            scanf_s("%d", (a + i * m + j));
        }
    }
    int max = 0;
    int iMax = 0, jMax = 0, iMin = 0, jMin = 0;
    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            if ((a+i*n+j) < (a+iMin*m+jMin)) {
                iMin = i;
                jMin = j;
            }
            if ((a + i * n + j) < (a + iMax * m + jMax)) {
                iMax = i;
                jMax = j;
            }
        }
    }
    printf("%d\n",*(a+iMax*m+jMax));
    printf("%d", *(a + iMin * m + jMin));
    double min = *(a + iMin * m + jMin), max = *(a + iMax * m + jMax), z = min / (max - min);
    free(a);
}

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

Автор решения: MBo
 for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            if (*(a+i*m+j) < *(a+iMin*m+jMin)) {
                iMin = i;
                jMin = j;
            }
            if (*(a + i * m + j) > *(a + iMax * m + jMax)) {
                iMax = i;
                jMax = j;
            }
        }
    }
→ Ссылка