Ir para conteúdo
Fórum Script Brasil
  • 0

Matriz 3x3 - mostrar o menor número


Carlos Gabriel

Pergunta

Olá pessoal beleza ?

Estou com um problema em meu código, na parte em que ele tem que mostrar o menor número digitado da matriz, ele sempre mostra como zero, já mudei o código várias vezes porém ainda não consegui resolver este problema, alguém ai pode me ajudar por favor ?

O código é este:

 

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

int main()
{
        int lin,col;
        int mat[3][3];
        int menor=0;
        int pos1=0, pos2=0;
    
        setlocale(LC_ALL,"portuguese");
        
        for(lin=0; lin<=2; lin++){
            for(col=0; col<=2; col++){
                printf("Digite um número para linha [%d] e um para coluna [%d]: ", lin+1, col+1);
                scanf("%d", &mat[lin][col]);
            }
            printf("\n");
        }
        
        printf("\n Matriz\n\n");
        
        for(lin=0; lin<=2; lin++){
            for(col=0; col<=2; col++){
                printf("%d\t ", mat[lin][col]);
            }
            printf("\n\n");
        }
    
        for(lin=0; lin<=2; lin++){
            for(col=0; col<=2; col++){
                
                if(mat[lin][col] < menor){
                    menor = mat[lin][col];
                    
                    pos1=lin;
                    pos2=col;
                }
            }
        }

            
        
        printf("\n O número menor é: [%d]", menor);
        
        printf("\n\n A posição do menor número será: [%d][%d]", pos1+1,pos2+1);
        
        
        printf("\n\n");
        system("pause");
        return 0;
}

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

A menos que você queira inserir somente números negativos na sua matriz, altere o valor de menor para um valor alto, por exemplo, se você só inserir números positivos na sua matriz, o menor será 0 mesmo, não vai ter número menor que 0, mude seu valor de menor para 100 por exemplo, aí irá funcionar, caso o valor [x][y] seja menor, este irá para o lugar de menor, faça essa operação varrendo a matriz pelo menos umas duas vezes, boa sorte.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, olhando o seu código você pode fazer a seguinte alteração antes do (for) de processamento da comparação:

menor = mat [0][0];

 for(lin=0; lin<=2; lin++){
            for(col=0; col<=2; col++){
                
                if(mat[lin][col] < menor){
                    menor = mat[lin][col];
                    
                    pos1=lin;
                    pos2=col;
                }
            }
        }

assim o menor valor será o primeiro, quando ele começar a fazer a comparação caso haja algum valor menor do que este que foi atribuído a variável menor irá receber este valor.

e aqui vai um código pronto e comentado para você se espelhar caso precise:

#include <stdio.h>
#include <stdlib.h>
#define L 3 //numero de linha
#define C 3 //numero de colunas
#define TAM 1 //tamanho para o vetor que recebe a posicao (pos[TAM][TAM]).

main (){
    
int A[L][C]; //matriz
int linha, coluna, i, j; //indice para contar linha e coluna
int posL, posC, menor; //'posL' e 'posC' para receber a (linha e coluna) e, 'menor' para receber o valor.
    
    for (linha=0; linha<L; linha++){//faz a leitura da matriz.
        for (coluna=0; coluna<C; coluna++){
            printf ("A[%d][%d]: ", linha, coluna);
            scanf ("%d", &A[linha][coluna]);
        }
    }
    
    menor=A[0][0]; //recebe o primeiro valor da matriz.
    
    for (linha=0; linha<L; linha++){ //comparacao dos valores para encontrar o menor.
        for (coluna=0; coluna<C; coluna++){
            if (A[linha][coluna]<menor){
                menor = A[linha][coluna]; //menor recebe o menor valor.
                posL = linha; //posl recebe a linha em que o valor se encontra.
                posC = coluna;// posC recebe a coluna em que o valor se encontra.
            }
        }
    }
    
    printf ("\n");    //pula uma linha.
    
    for (linha=0; linha<L; linha++){       //imprime a matriz
        for (coluna=0; coluna<C; coluna++){
            printf ("%d ", A[linha][coluna]);
        }
        printf ("\n");
    }
    
    printf ("\n");    //pula uma linha
    
    printf ("Menor valor: %d\n", menor);     //imprime o menor valor.
    printf ("Posicao: A[%d][%d] \n", posL, posC);    //imprime a posicao.
    
return 0;
}

 

Espero ter ajudado, abrçs.

Editado por JhonEngSoft
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...