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;
}
}
}