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

Olá. Fiz apenas duas correções no seu código e vou postá-lo para você visualizar.

Aqui, com essas alterações, resolveu o problema

 

#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;
        char *limparBuffer = NULL;
    
        setlocale(LC_ALL,"portuguese");
        
        for(lin=0; lin<=2; lin++){
            for(col=0; col<=2; col++)
			{
                printf("\nDigite um número para linha [%d] e um para coluna [%d]: ", lin+1, col+1);
                scanf("%d", &mat[lin][col]);
                scanf("%c", &limparBuffer); /* aqui e para limpar o buffer de entrada, para 
												não atrapalhar as outras leituras */
            }
            //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");
        }
    	
    	menor = mat[0][0]; // Essa e a parte q esta faltando no seu codigo e que resolve o problema
    
        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;
}

Se estiver tudo ok avisa. Caso o erro persista avisa tbém hehe

Link para o comentário
Compartilhar em outros sites

  • 0

O que eu fiz foi atribuir para a sua variável "menor" a matriz na linha 0 e coluna 0, para daí, estando sua variável associada com a matriz,  ficar possível fazer a comparação na condição do if e daí atualizar o valor da sua variável "menor".

Para encontrar o maior número da matriz é a mesma coisa: maior = mat[0][0]; 

Do modo como você vinha fazendo sua variável menor era inicializada com "0", e isso tornava errônea a comparação na condição do if 

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...