Найти максимальный элемент матрицы, который находится на диагонали выше главной - C (СИ)
Формулировка задачи:
Возникла проблема. Мне по заданию нужно найти макс элемент который находится на диагонали, которая находится выше главной(см фотку) и аналогично найти мин элемент в диагонали, которая находится под побочной(см фотку)
Проблема в том, что программа находит макс элемент не в конкретной диагонали, а среди всех элементов которые находятся выше главной диагонали, ну и с побочная такая же фигня...
ЧТО НУЖНО ИСПРАВИТЬ, ЧТОБЫ БЫЛО ВСЕ ЧЕТКО ПО ЗАДАНИЮ??
#include <stdio.h> #include <conio.h> #include <math.h> #include <time.h> #define N 3 int main(){ int ar[N][N]; int i,j; int max, min, maxj, maxi, minj, mini, temp; time_t t; srand((unsigned) time(&t)); for(i = 0; i < N; i++){ for(j =0; j < N; j++){ ar[i][j] = rand()%15+1; if(i < j){ // находим макс //ar[i][j] = 0; if(i == 1 && j == 1) {max = ar[i][j]; i = j = 1;} if(ar[i][j] > max) { max = ar[i][j]; maxi = i; maxj = j; } } if((i + j)>N-1){ // находим мин //ar[i][j] = 0; if(i == 1 && j == 0) {min = ar[i][j]; mini = 1; minj = 0;} if(ar[i][j] < min){ min = ar[i][j]; mini = i; minj = j; } } printf("%3i",ar[i][j]); } printf("\n"); } printf("\nmin = %i",min); printf("\nmax = %i",max); temp = ar[mini][minj]; ar[mini][minj] = ar[maxi][maxj]; ar[maxi][maxj] = temp; printf("\n\n"); for(i = 0; i < N; i++){ for(j = 0; j < N; j++){ printf("%3i",ar[i][j]); } printf("\n\n"); } getch(); return 0; }
Решение задачи: «Найти максимальный элемент матрицы, который находится на диагонали выше главной»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #define N 5/*размеры матрицы*/ int main(){ int arr[N][N], i, j, max, min;/*матрица, индексы, максимальное число, минимальное число*/ printf("Enter a numbers of matrix:\n"); for (i = 0; i < N; i++){/*луп для ввода матрицы*/ for (j = 0; j < N; j++) scanf("%d", &arr[i][j]); } max = arr[0][1];/*допустим что первое чесло в диагонали которая над главной оно самое большое*/ for (i = 1, j = 2; i < N; i++, j++){/*луп проверяет все числа в нужной диагонали*/ if (max < arr[i][j])/*если нашли число больше, то заменяем*/ max = arr[i][j]; } printf("The max number is: %d\n", max);/*выводим ответ*/ min = arr[1][N - 1];/*допустим самое маленькое число под подочной оно самое правое в ней*/ for (i = 2, j = N - 2; i < N; i++, j--){/*проверяем всю нужную деагональ*/ if (min > arr[i][j])/*если нашли число меньше, меняем*/ min = arr[i][j]; } printf("The min number is: %d\n", min);/*выводим ответ*/ return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д