Informática, perguntado por Augustus1047, 1 ano atrás

Faça um algoritmo para ler: a descrição do produto (nome), a quantidade adquirida e o preço unitário. Calcular e escrever o total (total = quantidade adquirida * preço unitário), o desconto e o total a pagar (total a pagar = total - desconto), sabendo-se que: - Se quantidade <= 5 o desconto será de 2% - Se quantidade > 5 e quantidade <=10 o desconto será de 3% - Se quantidade > 10 o desconto será de 5%

Soluções para a tarefa

Respondido por bokomoko
1
O ponto mais importante desse programa é encaixar o valor total da compra nas faixas de desconto.

Podemos fazer isso de duas formas.

A forma supostamente mais simples é um ninho de if's para cada faixa. Nesse caso o truque é organizar os if's para reduzí-los ao mínimo necessário evitando testes redundantes.

Então analisemos a tabela
Se quantidade <= 5 o desconto será de 2% -
Se quantidade > 5 e quantidade <=10 o desconto será de 3% -
Se quantidade > 10 o desconto será de 5%

Inicialmente podemos pensar assim "3 condições entào 3 if's" porém, dá para simplificar
if quantidade > 10 then desconto = 5%
else // se chegamos aqui a quantidade é <= 10 portanto não precisa testar
    if quantidade > 5 then desconto = 3%
    else desconto = 2%

então com apenas 2 if's resolvemos o problema. Porque ? Porque 2 if's aninhados dão 3 possibilidades. Na verdade n if's alinhados dão n+1 possibilidades.

Essa técnica é eficaz e resolve só que ela tem um problema. Se a tabela de descontos for modificada, tem que mudar o código do programa.

Uma alternativa é usar uma tabela e fazer a busca assim
descontos = [ 5%, 3%, 2% ]
faixas = [ 10, 5 , 0 ] 
Observe, a tabela está ordenada da maior quantidade para a menor
Então fazemos assim
qual = 1
while quantidade < faixas[qual] :    // quantidade é menor que limite ? 
     qual = qual + 1    // sim, então vamos para a próxima faixa
// a variável qual sai do loop apontando para a faixa adequada
desconto = desconto[faixa]

A vantagem dessa técnica é que o código tem 3 linhas apenas e suporta quantas faixas de desconto forem. Além disso, as tabelas de faixa e desconto podem ser facilmente editadas adicionando/editando/removendo itens dos vetores que podem até ser lidos de um arquivo.

O resto do programa é moleza. Exibir mensagens, obter dados, fazer contas.

  eis o programa aqui
https://repl.it/@bokomoko/compra-com-desconto
Perguntas interessantes