Output from the highest value of the array going out incorrectly

1

The code does not print the highest value of the array entered 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've debugged the program and the first time it passes through the 'for' variable the 'bigger' variable gets 'garbage in memory' so the 'if' command becomes useless on 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

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

    
asked by anonymous 10.06.2016 / 19:38

1 answer

2

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

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

Lastly you have to zero the maior value at the end of this loop so that a bug does not occur in comparison to other rows and you should create a variable to store the column value with the highest value: p>

 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
}
    
11.06.2016 / 17:07