Найти максимальный элемент матрицы, который находится на диагонали выше главной - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Возникла проблема. Мне по заданию нужно найти макс элемент который находится на диагонали, которая находится выше главной(см фотку) и аналогично найти мин элемент в диагонали, которая находится под побочной(см фотку) Проблема в том, что программа находит макс элемент не в конкретной диагонали, а среди всех элементов которые находятся выше главной диагонали, ну и с побочная такая же фигня... ЧТО НУЖНО ИСПРАВИТЬ, ЧТОБЫ БЫЛО ВСЕ ЧЕТКО ПО ЗАДАНИЮ??
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <math.h>
  4. #include <time.h>
  5. #define N 3
  6. int main(){
  7. int ar[N][N];
  8. int i,j;
  9. int max, min, maxj, maxi, minj, mini, temp;
  10. time_t t;
  11. srand((unsigned) time(&t));
  12. for(i = 0; i < N; i++){
  13. for(j =0; j < N; j++){
  14. ar[i][j] = rand()%15+1;
  15. if(i < j){ // находим макс
  16. //ar[i][j] = 0;
  17. if(i == 1 && j == 1) {max = ar[i][j]; i = j = 1;}
  18. if(ar[i][j] > max) {
  19. max = ar[i][j];
  20. maxi = i;
  21. maxj = j;
  22. }
  23. }
  24. if((i + j)>N-1){ // находим мин
  25. //ar[i][j] = 0;
  26. if(i == 1 && j == 0) {min = ar[i][j]; mini = 1; minj = 0;}
  27. if(ar[i][j] < min){
  28. min = ar[i][j];
  29. mini = i;
  30. minj = j;
  31. }
  32. }
  33. printf("%3i",ar[i][j]);
  34. }
  35. printf("\n");
  36. }
  37. printf("\nmin = %i",min);
  38. printf("\nmax = %i",max);
  39. temp = ar[mini][minj];
  40. ar[mini][minj] = ar[maxi][maxj];
  41. ar[maxi][maxj] = temp;
  42. printf("\n\n");
  43. for(i = 0; i < N; i++){
  44. for(j = 0; j < N; j++){
  45. printf("%3i",ar[i][j]);
  46. }
  47. printf("\n\n");
  48. }
  49. getch();
  50. return 0;
  51. }

Решение задачи: «Найти максимальный элемент матрицы, который находится на диагонали выше главной»

textual
Листинг программы
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #define N 5/*размеры матрицы*/
  4.  
  5. int main(){
  6.     int arr[N][N], i, j, max, min;/*матрица, индексы, максимальное число, минимальное число*/
  7.     printf("Enter a numbers of matrix:\n");
  8.     for (i = 0; i < N; i++){/*луп для ввода матрицы*/
  9.         for (j = 0; j < N; j++)
  10.             scanf("%d", &arr[i][j]);
  11.     }
  12.     max = arr[0][1];/*допустим что первое чесло в диагонали которая над главной оно самое большое*/
  13.     for (i = 1, j = 2; i < N; i++, j++){/*луп проверяет все числа в нужной диагонали*/
  14.         if (max < arr[i][j])/*если нашли число больше, то заменяем*/
  15.             max = arr[i][j];
  16.     }
  17.     printf("The max number is: %d\n", max);/*выводим ответ*/
  18.     min = arr[1][N - 1];/*допустим самое маленькое число под подочной оно самое правое в ней*/
  19.     for (i = 2, j = N - 2; i < N; i++, j--){/*проверяем всю нужную деагональ*/
  20.         if (min > arr[i][j])/*если нашли число меньше, меняем*/
  21.             min = arr[i][j];
  22.     }
  23.     printf("The min number is: %d\n", min);/*выводим ответ*/
  24.     return 0;
  25. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы