Найти элементы матрицы, которые превышают все элементы, лежащие ниже главной диагонали - C (СИ) (75314)

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

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

Дана матрица. Среди элементов матрицы лежащих выше главной диагонали найти те, которые превышают все элементы лежащие ниже главной диагонали. Вычислить их сумму.
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5. #define N 150
  6. #define M 180
  7. int main()
  8. {
  9. int i,j,s,t,k=0,p,r;
  10. int **a, *sr, *c,under_max=0,su=0;
  11. puts("Wwedite kol-wo stolbzow");
  12. scanf("%d",&s);
  13. if(s>N)s=N;
  14. puts("Wwedite kol-wo strok");
  15. scanf("%d",&t);
  16. if(t>M)t=M;
  17. a=(int **)malloc(sizeof(int *)*s);
  18. for (i=0;i<s;i++)
  19. {a[i]=(int *)malloc(sizeof(int)*t);
  20. if (a[i]==NULL)
  21. { puts("ne sozdan dinamischeskij massiw");
  22. return 0;}}
  23. sr=(int *)malloc(t*sizeof(int));
  24. puts("Wwedite matrizu");
  25. for(i=0;i<s;i++){
  26. for(j=0;j<t;j++){scanf("%d",&a[i][j]);}}
  27. for(i=0;i<s;i++){
  28. for(j=0;j<t;j++)
  29. if (i>j && a[i][j]>under_max)
  30. under_max=a[i][j];
  31. }
  32. for (i=0; i<s; i++)
  33. for (j=0; j<t; j++)
  34. if (i<j && a[i][j]>under_max)
  35. {
  36. printf("%d ",a[i][j]);
  37. sr[i]=a[i][j];
  38. su+=sr[i];
  39. }
  40. printf("\nSumma = %d",su);
  41. free(a);
  42. free(a);
  43. free(sr);
  44. system ("pause");
  45. return 0;
  46. }
можете проверить правильно ли?

Решение задачи: «Найти элементы матрицы, которые превышают все элементы, лежащие ниже главной диагонали»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <memory.h>
  5.  
  6. #define N 10
  7.  
  8. int main(int argc, char* argv[])
  9. {
  10.     int** A = new int*[N];
  11.     memset((void*)A, 0x00, sizeof(int*) * N);
  12.  
  13.     for (int i = 0; i < N; i++)
  14.     {
  15.         A[i] = new int[N];
  16.         for (int j = 0; j < N; j++)
  17.         {
  18.             A[i][j] = rand() % N + 1;
  19.             printf("%d ",A[i][j]);
  20.         }
  21.  
  22.         printf("\n");
  23.     }
  24.  
  25.     printf("\n");
  26.  
  27.     int max_i = 1, max_j = 0;
  28.     for (int i = 1; i < N; i++)
  29.         for (int j = 0; j < i; j++)
  30.             if (A[i][j] > A[max_i][max_j])
  31.             {
  32.                 max_i = i;
  33.                 max_j = j;
  34.             }
  35.  
  36.     for (int i = 0; i < N; i++)
  37.         for (int j = i; j < N; j++)
  38.             if (A[i][j] >= A[max_i][max_j])
  39.                 printf("A[%d][%d] = %d\n",i,j,A[i][j]);
  40.  
  41.     _getch();
  42.  
  43.     return 0;
  44. }

Объяснение кода листинга программы

  1. Создается двумерный массив (матрица) случайных целых чисел.
  2. Находится максимальное значение в матрице.
  3. В цикле обходятся все элементы матрицы. Если значение текущего элемента больше максимального, то он выводится на экран.

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


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

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

11   голосов , оценка 4.273 из 5

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

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

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