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

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

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

Дана матрица. Среди элементов матрицы лежащих выше главной диагонали найти те, которые превышают все элементы лежащие ниже главной диагонали. Вычислить их сумму.
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#define N 150
#define M 180
int main()
{
    int i,j,s,t,k=0,p,r;
    int **a, *sr, *c,under_max=0,su=0;
    puts("Wwedite kol-wo stolbzow");
    scanf("%d",&s);
    if(s>N)s=N;
    puts("Wwedite kol-wo strok");
    scanf("%d",&t);
    if(t>M)t=M;
    a=(int **)malloc(sizeof(int *)*s); 
    for (i=0;i<s;i++)
    {a[i]=(int *)malloc(sizeof(int)*t);
    if (a[i]==NULL)
         { puts("ne sozdan dinamischeskij massiw");
            return 0;}}
    sr=(int *)malloc(t*sizeof(int));
    puts("Wwedite matrizu");
    for(i=0;i<s;i++){
    for(j=0;j<t;j++){scanf("%d",&a[i][j]);}}
    
    for(i=0;i<s;i++){
    for(j=0;j<t;j++)
     if (i>j && a[i][j]>under_max)
            under_max=a[i][j];
}
    for (i=0; i<s; i++)
    for (j=0; j<t; j++)
    if (i<j && a[i][j]>under_max)
    {
        printf("%d ",a[i][j]); 
        sr[i]=a[i][j]; 
        su+=sr[i];
    }
   printf("\nSumma = %d",su);
   free(a);
   free(a);
    free(sr);
   
    system ("pause");
    return 0;
}
можете проверить правильно ли?

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <memory.h>
 
#define N 10
 
int main(int argc, char* argv[])
{
    int** A = new int*[N];
    memset((void*)A, 0x00, sizeof(int*) * N);
 
    for (int i = 0; i < N; i++)
    {
        A[i] = new int[N];
        for (int j = 0; j < N; j++)
        {
            A[i][j] = rand() % N + 1;
            printf("%d ",A[i][j]);
        }
 
        printf("\n");
    }
 
    printf("\n");
 
    int max_i = 1, max_j = 0;
    for (int i = 1; i < N; i++)
        for (int j = 0; j < i; j++)
            if (A[i][j] > A[max_i][max_j])
            {
                max_i = i;
                max_j = j;
            }
 
    for (int i = 0; i < N; i++)
        for (int j = i; j < N; j++)
            if (A[i][j] >= A[max_i][max_j]) 
                printf("A[%d][%d] = %d\n",i,j,A[i][j]);
 
    _getch();
 
    return 0;
}

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

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

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


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

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

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