Найти максимальный элемент матрицы, который находится на диагонали выше главной - 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;
}

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы