multiplication of matrices with minimum of each row

1

Hello, I made a program with the intention of multiplying each element of each row of an array by its highest value element, but my program multiplies each one by itself

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

//achar maior menor de cada linha da matriz e e multiplicar cada numero da linha por ele
int main(int argc, char *argv[]) 
{
    int mat[4][4];
    int i, j, aux;

    //le matriz
    for(i=0; i<=3; i++)
    {
        for(j=0; j<=3; j++)
        {
            setlocale(LC_ALL, "Portuguese");
            printf("digite um numero para a posição %d e coluna %d de mat:\n", i, j);
            scanf("%d", &mat[i][j]);
        }
    }

    //1ºfase de processamento
    for(i=0; i<=3; i++)
    {
        for(j=0; j<=3; j++)
        {
        if(mat[i][j]>mat[i][j] || mat[i][j]==mat[i][j] )//se o elemento na posição mat={i,j} for o maior numero da linha
            {
                aux=mat[i][j];//guardar em aux
                mat[i][j]=mat[i][j]*aux;
            }
        }
    }

    system("cls");
    fflush(stdin);

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


return 0;
}
    
asked by anonymous 09.08.2014 / 22:38

1 answer

2

Create an auxiliary function to calculate the largest element of a vector:

int maxElement(int array[], int arraySize)
{
    int max = array[0];
    int i;
    for (i = 1; i < arraySize; i++)
    {
        if (array[i] > max)
            max = array[i];
    }

    return max;
}

Then adapt your logic to use this function:

//1º fase de processamento
for(i = 0; i < 4; i++)
{
    // Calcula o valor do maior elemento da linha
    int aux = maxElement(mat[i], 4);
    for(j = 0; j < 4; j++)
    {
        // Mesma coisa do que mat[i][j] = mat[i][j] * aux
        mat[i][j] *= aux;      
    }
}

Functional example in Ideone

    
09.08.2014 / 23:14