Я хочу найти минимум в строках, но максимум в столбце на языке c с помощью матрицы - PullRequest
1 голос
/ 27 марта 2020
#include <stdio.h>
//Matrix 5x5
int main()
{
    int i,j,a[5][5];
    printf("Enter Matrix A :\n");
//for scan numbers
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("A[%d,%d] = ",i+1,j+1);
            scanf("%d",&a[i][j]);
        }
    }
    printf("\nMatrix A:\n");
//for print matrix
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("%d\t",a[i][j]);
        }
        printf("\n");
    }
//Show answer
    printf("\nAnswer:\n");
//Display min and max like A[a,b] = x that make me confused

    return 0;
}

Я новичок в кодировании, и теперь так растерялся из-за того, как найти его, я пытаюсь решить его, но не могу, и поэтому я здесь в stackoverflow.

I знаю, что я должен найти в строке, а затем в столбце, но я не знаю, как его кодировать.

Пример

Матрица A:

[2 3 3 4 1]

[12 5 6 7 9]

[9 2 7 9 1]

[3 1 4 5 6]

[7 4 6 10 3]

Ответ: A [2,2] = 5

1 Ответ

1 голос
/ 27 марта 2020

Попробуйте это,

#include <stdio.h>

int check(int arr[5][5],int r,int c)   /*Function to check is that element is lesser than all element in row and grater than all element in col*/
{
    int i;

    for(i=0;i<5;i++)
    {
       if(arr[r][c]>=arr[r][i]&&i!=c)
            return 0;
    }

    for(i=0;i<5;i++)
    {
       if(arr[r][c]<=arr[i][c]&&i!=r)
            return 0;
    }
    return 1;
}

int main()
{
    int i,j,a[5][5],flag=1;

    printf("Enter Matrix A :\n");

    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("A[%d,%d] = ",i+1,j+1);
            scanf("%d",&a[i][j]);
        }
    }

    printf("\nMatrix A:\n");

    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("%d\t",a[i][j]);
        }
        printf("\n");
    }

    printf("\nAnswer:\n");

    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            if(check(a,i,j))
            {
                printf("A[%d,%d]=%d",i+1,j+1,a[i][j]);
                flag=0;
                break;
            }
    }
    }

    if(flag)
    {
        printf("No Value");
    }

    return 0;
 }

Если ваша матрица имеет более одного значения, как это (5), удалите break, и если вы удалили разрыв, это напечатает все значения, как это (5), иначе это будет напечатайте первое значение следующим образом.

Примечание. Код можно оптимизировать лучше, но это для простоты и понимания.

...