• 0
Sign in to follow this  
Carlos Gabriel

Matriz 3x3 - mostrar o menor número

Question

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;
}

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0
Guest

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

Share this post


Link to post
Share on other sites
  • 0
Guest

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 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this