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
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
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
Matemática,
8 meses atrás
História,
1 ano atrás