Output of largest matrix value exiting incorrect

Asked

Viewed 131 times

1

The code does not print the highest value of the matrix informed by the user

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

int main(void){
    setlocale(LC_ALL, "");
    int n, m, o=0, posic, posic1;
    int matriz[n][m];
    int  lin, col, maior=0, x=0;


    printf("Para usar o programa, digite as dimensões da matriz desejada.\n");
    printf("Digite a dimensão das linhas: ");
    scanf("%i", &n);

    printf("Digite a dimensão das colunas: ");
    scanf("%i", &m);


    printf("Agora digite os elementos dessa matriz %ix%i: \n", n, m);
    for(lin=0;lin<n;lin++){
        for(col=0;col<m;col++){
            scanf("%i", &matriz[n][m]);

        }
    }



    for(lin=0;lin<n;lin++){
        for(col=0;col<m;col++){
            if(maior < matriz[lin][col]){
                maior = matriz[lin][col];

            }
        }
        printf("O maior elemento da linha %i é: %i\t", 1+o,  maior);
        printf("Ele está localizado na coluna %i!\n", lin);
        o++;
    }
}

I will debug the program and the first time you pass the 'for' variable 'higher' gets "junk in memory" thus making the 'if' command useless in the other loops.

for(lin=0;lin<n;lin++){
            for(col=0;col<m;col++){
                if(maior < matriz[lin][col]){
                    maior = matriz[lin][col];

Output inserir a descrição da imagem aqui

It was to inform the value of 6 in the first line and the value of 8 in the second.

1 answer

2


Your first problem is that you are declaring the matrix before setting its size. Declare it after setting the values of n and m, int matriz[n][m]. Your second problem is in the for loop you add the values, you must add the values like this:

scanf("%d", &matriz[lin][col]);

Finally you have to reset the value of maior at the end of this loop, so that there is no bug in the comparison with other rows and you must create a variable to store the value of the column with the highest value:

 for(lin=0;lin<n;lin++){
    for(col=0;col<m;col++){
        if(maior < matriz[lin][col]){
            maior = matriz[lin][col];
            pos = col // adicione para guardar a coluna com o maior valor
        }
    }
    printf("O maior elemento da linha %i é: %i\t", 1+o,  maior);
    printf("Ele está localizado na coluna %i!\n", pos);// aqui você usa a variavél pos
    o++;
    maior = 0; // adicione esta linha
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.