Ir para o conteúdo

Aula 27 - Encontrar maior e menor valor do vetor

Questão#

Crie um programa que receba um vetor de 10 elementos do tipo inteiro e seu programa deve mostrar o valor do maior e do menor elemento do vetor.

$ Digite um valor inteiro: 10
$ Digite um valor inteiro: 5
$ Digite um valor inteiro: 30
$ Digite um valor inteiro: 40
$ Digite um valor inteiro: 50
$ Digite um valor inteiro: 60
$ Digite um valor inteiro: 70
$ Digite um valor inteiro: 800
$ Digite um valor inteiro: 90
$ Digite um valor inteiro: 0

O maior valor: 800 o menor valor: 0

Solução#

Para resolver este problema existem diversas maneiras, mas algumas delas podem apresentar alguns erros dependendo dos valores informados

Solução 1#

solucao1.alg
algoritmo "MaiorEMenor"

var
    vet: vetor[0..9] de inteiro
    maior, menor, i: inteiro

inicio
    para i de 0 ate 9 faca
        escreva("Digite um valor inteiro:")
        leia(vet[i])

        se vet[i] > maior entao
            maior <- vet[i]
        fimse

        se vet[i] < menor entao
            menor <- vet[i]
        fimse
    fimpara

    escreva("Maior valor:", maior, "o menor valor:", menor)
fimalgoritmo

Aviso

Observe que se você digitar apenas valores positivos maiores que 0, o programa irá informar que o menor valor é o número 0. Isso acontece porque o Visualg inicializa todas as variáveis com o valor 0.

Também note que se você informar apenas valores negativos o seu programa irá informar erroneamente que o maior valor é o número 0. E também acontece por causa do valor inicial das variáveis.

Solução 2#

Para essa segunda solução, ao invés de utilizar as variáveis maior e menor para armazenar os valores em si, nós usaremos estas variáveis para guardar a posição do maior e menor valor no vetor.

solucao2.alg
algoritmo "MaiorEMenor"

var
    vet: vetor[0..9] de inteiro
    maior, menor, i: inteiro

inicio
    para i de 0 ate 9 faca
        escreva("Digite um valor inteiro:")
        leia(vet[i])

        se vet[i] > vet[maior] entao
            maior <- i
        fimse

        se vet[i] < vet[menor] entao
            menor <- i
        fimse
    fimpara

    escreva("Maior valor:", vet[maior], "o menor valor:", vet[menor])
fimalgoritmo

Aula em vídeo#

Caso prefira também existe o conteúdo em forma de vídeo

Desafios#

Caso queira treinar um pouco mais você pode ver o(s) seguinte(s) enunciado(s):