Найти максимальный элемент матрицы, который находится на диагонали выше главной - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д