Квадратный массив. Найти максимальный элемент ниже главной диагонали - C (СИ)
Формулировка задачи:
Господа, нидхелп. Запутался.
Дан двумерный квадратный массив размером n. Найти максимальный элемент (max) ниже главной диагонали и минимальный элемент (min) выше главной диагонали. Поменять их местами.
Состряпал вот это:
Компилируется вроде нормально, но при построении ругается на min и max, Я понимаю, что проблема в функциях minimal() и maximal(), а точнее в присвоении данным переменным начального значения, но вот реализовать это самостоятельно у меня не получается.
Прошу помощи.
#include <conio.h> #include <stdio.h> #include <stdlib.h> int minimal(int **mas, int n); int maximal(int **mas, int n); int change_values(int *min, int *max); int main(void) { int n, min, max; int **mas; printf("\nVvod razm n\n"); scanf("%d", &n); mas = (int**)calloc(n, sizeof(int*)); for (int i=0;i<n;i++) *(mas+i) = (int*)calloc(n, sizeof(int)); printf("\nVvod massiva \n"); for (int i=0; i<n; i++) for (int j=0; j<n; j++) scanf("%d", *(mas+i)+j); printf("\nIsx massiv \n"); for (int i=0; i<n; i++) { printf("\n"); for (int j=0; j<n; j++) printf("%3d", *(*(mas+i)+j)); } int minimal(); printf("\n\n Minimal element - %d\n", min); int maximal(); printf("\n Maximal element - %d\n", max); int change_values(int *min, int *max); printf("\n After changes\n min = %d\n max = %d\n", max, min); printf("\n"); } int minimal(int **mas, int n) { int i, j, min = mas [i][j]; for (i=0; i<n; i++) for (j=i+1; j<n; j++) if (j<min) { min=j; } return min; } int maximal(int **mas, int n) { int i, j, max = mas [i][j]; for (i=0; i<n; i++) for (j=i-1; j!=0; j--) if (j>max) { max=j; } return max; } int change_values(int *min, int *max) { int temp; temp = *min; *min = *max; *max = temp; return *min, *max; }
Решение задачи: «Квадратный массив. Найти максимальный элемент ниже главной диагонали»
textual
Листинг программы
int min= minimal();