Crie um algoritmo que leia os nomes e os preços dos produtos de uma loja e que escreva o nome do produto mais caro. Considere que o final da lista é marcado pelo produto ‘XXX’ e que não existem preços repetidos.
Passo 1
O enunciado pede um algoritmo que leia repetidamente o nome e o preço de produtos de uma loja até o nome ser “XXX” (sentinela) e, ao final, escreva o nome do produto com o maior preço. O conteúdo aqui é controle de laços com sentinela e manutenção de um valor máximo usando variáveis de controle.
Passo 2
Precisamos de duas variáveis de controle: uma para armazenar o maior preço encontrado e outra para guardar o nome do produto que corresponde a esse preço. Como não sabemos qual será o primeiro preço, podemos inicializar o maior preço com um valor muito baixo (conceitualmente
) ou com algum número que fique sempre abaixo de qualquer preço real que possa aparecer.
Passo 3
Em seguida, entramos num laço infinito (por exemplo,
enquanto verdadeiro
) que, em cada iteração, lê o nome do produto. Se o nome for “XXX”, interrompemos o laço. Caso contrário, lemos o preço e comparamos com o maior preço armazenado. Se o preço lido for maior, atualizamos tanto o maior preço quanto o nome do produto mais caro.Passo 4
Quando o laço terminar (ou seja, ao encontrar “XXX”), a variável que guarda o nome do produto mais caro já estará corretamente atualizada. Basta então exibir esse nome ao usuário.
Resposta
Algoritmo ProdutoMaisCaro
var nome, nomeMaisCaro: cadeia
preco, precoMaisAlto: real
precoMaisAlto <- -\(1\)e\(9\) // valor inicial muito baixo
nomeMaisCaro <- ""
enquanto verdadeiro faca
escreva("Digite o nome do produto (XXX para sair): ")
leia(nome)
se nome \(=\) "XXX" entao
pare
fimse
escreva("Digite o preco de ", nome, ": ")
leia(preco)
se preco > precoMaisAlto entao
precoMaisAlto <- preco
nomeMaisCaro <- nome
fimse
fimenquanto
escreva("O produto mais caro eh: ", nomeMaisCaro)
Fimalgoritmo