Uma empresa deseja aumentar seus preços em 20 \%. Fazer um algoritmo que leia o código e o preço de custo de cada produto e calcule o preço novo; calcule também a média dos preços com e sem aumento; mostre o código e o preço novo de cada produto e, no final, as médias. A entrada de dados deve terminar quando for lido um código de produto negativo.

Passo 1

O que o enunciado pede e quais dados são fornecidos:
  • O programa deve ler repetidamente o código e o preço de custo de produtos.
  • Para cada produto lido, deve calcular o preço novo aplicando um aumento de 20\%.
  • Para cada produto deve-se mostrar o código e o preço novo.
  • Ao final, depois de todas as leituras, deve mostrar:
    • a média dos preços sem aumento (média dos preços de custo lidos);
    • a média dos preços com aumento (média dos preços já aumentados).
  • A leitura termina quando for lido um código de produto negativo (ou seja, o código negativo é a condição de parada).
  • Informações importantes extraídas do enunciado:
    • taxa de aumento: 20\%;
    • condição de parada: código <0.

Passo 2

Entendendo o que significa "aumentar em 20\%" e como calcular o preço novo:
  • Aumentar um valor em 20\% significa somar 20\% desse valor ao próprio valor. Se o preço de custo for p, o acréscimo é 0,20\cdot p.
  • Podemos escrever o preço novo como:
preco\_novo = p + 0,20\cdot p.
  • Fatorando p:
preco\_novo = p \cdot (1 + 0,20) = p \cdot 1,2.
  • Então, para calcular rápido na prova ou código, multiplicamos o preço de custo por 1,2.

Passo 3

Como calcular médias (o que é média aritmética e variáveis que usaremos):
  • Se temos n produtos com preços de custo p_1,p_2,\dots,p_n, a média dos preços sem aumento é:
\text{média\_orig} = \dfrac{1}{n}\sum_{i=1}^{n} p_i.é
  • Se os preços novos correspondentes são p'_1,p'_2,\dots,p'_n, a média dos preços com aumento é:
\text{média\_novo} = \dfrac{1}{n}\sum_{i=1}^{n} p'_i.é
  • Para implementar sem guardar todos os preços, usa-se acumuladores:
    • S_{orig} = soma acumulada dos p_i;
    • S_{new} = soma acumulada dos p'_i;
    • n = contador de produtos lidos.
  • No fim:
\text{média\_orig} = \dfrac{S_{orig}}{n},\qquad \text{média\_novo} = \dfrac{S_{new}}{n}.éé
  • Atenção: se n=0 (ou seja, nenhum produto lido antes de um código negativo), não se pode dividir por n. Nesse caso o programa deve informar que não houve produtos e evitar divisão por zero.

Passo 4

Estrutura geral do algoritmo (visão passo a passo, em linguagem natural para facilitar a implementação):
  1. Inicializar os acumuladores e contador:
    • S_{orig} \leftarrow 0
    • S_{new} \leftarrow 0
    • n \leftarrow 0
    • definir multiplicador de aumento m \leftarrow 1,2 (porque 1 + 0,20 = 1,2)
  2. Repetir:
    • Ler codigo.
    • Se codigo < 0, sair do laço (termina a entrada).
    • Ler preco\_custo.
    • Calcular preco\_novo \leftarrow preco\_custo \cdot m.
    • Mostrar (imprimir) o codigo e o preco\_novo (formatado com duas casas decimais).
    • Atualizar acumuladores:
      • S_{orig} \leftarrow S_{orig} + preco\_custo
      • S_{new} \leftarrow S_{new} + preco\_novo
      • n \leftarrow n + 1
    • Voltar a repetir para novo codigo.
  3. Após sair do laço:
    • Se n = 0 então informar que nenhum produto foi lido.
    • Caso contrário calcular: \text{média\_orig} \leftarrow \dfrac{S_{orig}}{n}, \qquad \text{média\_novo} \leftarrow \dfrac{S_{new}}{n}.éé
    • Mostrar as duas médias (formatadas com duas casas decimais).

Passo 5

Detalhes úteis para implementar na prova (pontos práticos e de formatação):
  • Formatação de saída: mostrar os preços com duas casas decimais costuma ser exigido. Ex.: imprimir preco\_novo = 12,34.
  • Tipos de variáveis:
    • codigo: inteiro (pode ser negativo para terminar).
    • preco\_custo, preco\_novo, S_{orig}, S_{new}, médias: reais (ponto flutuante).
    • n: inteiro contador.
  • Evitar divisão por zero: sempre verificar n>0 antes de calcular médias.
  • No cálculo use m=1,2 para evitar escrever sempre 0,20 somando.

Passo 6

Exemplo prático (traço de execução manual com alguns produtos) — para fixar a ideia:
Suponha que as entradas sejam (cada par é codigo, preco\_custo):
  • Primeiro produto: 100, 10,00
  • Segundo produto: 200, 5,50
  • Terceiro produto: 300, 20,00
  • Em seguida vem um código negativo: -1 (termina)
Passo a passo dos cálculos:
  • Início: S_{orig}=0,\;S_{new}=0,\;n=0.
  • Produto 1:
    • preco\_novo = 10,00 \cdot 1,2 = 12,00.
    • Mostrar: codigo = 100, preco\_novo = 12,00.
    • Atualizar: S_{orig} = 10,00, S_{new} = 12,00, n = 1.
  • Produto 2:
    • preco\_novo = 5,50 \cdot 1,2 = 6,60.
    • Mostrar: codigo = 200, preco\_novo = 6,60.
    • Atualizar: S_{orig} = 15,50, S_{new} = 18,60, n = 2.
  • Produto 3:
    • preco\_novo = 20,00 \cdot 1,2 = 24,00.
    • Mostrar: codigo = 300, preco\_novo = 24,00.
    • Atualizar: S_{orig} = 35,50, S_{new} = 42,60, n = 3.
  • Fim (codigo -1 lido):
    • Calcular médias: \text{média\_orig} = \dfrac{35,50}{3} \approx 11,83, \qquad \text{média\_novo} = \dfrac{42,60}{3} \approx 14,20.éé
    • Mostrar as duas médias.
Esse traço mostra que a lógica de acumular e contar funciona e evita guardar todas as linhas em memória.

Passo 7

Comportamento em casos especiais e dicas finais:
  • Se o primeiro código lido já for negativo ( n=0), o programa imprime uma mensagem como “Nenhum produto lido” e não tenta calcular médias.
  • Em implementações em linguagens como C, Java, Python: atenção ao tipo de leitura (inteiro para código, real para preço) e ao formato de impressão (usar formatação para duas casas).
  • Em prova, se tiver que escrever o algoritmo em pseudocódigo, seja claro na ordem: ler código, verificar negativo, ler preço, calcular, imprimir, acumular, repetir.

Resposta

Inicializar S_{orig}\leftarrow 0, S_{new}\leftarrow 0, n\leftarrow 0, m\leftarrow 1,2.\nLer codigo.\nEnquanto codigo \ge 0 faça:\n Ler preco\_custo.\n preco\_novo \leftarrow preco\_custo \cdot m.\n Imprimir codigo e preco\_novo (formatado com 2 casas).\n S_{orig} \leftarrow S_{orig} + preco\_custo.\n S_{new} \leftarrow S_{new} + preco\_novo.\n n \leftarrow n + 1.\n Ler codigo.\nFim enquanto.\nSe n = 0 então:\n Imprimir “Nenhum produto lido.”\nSenão:\n \text{média\_orig} \leftarrow \dfrac{S_{orig}}{n}é.\n \text{média\_novo} \leftarrow \dfrac{S_{new}}{n}é.\n Imprimir \text{média\_orig}é e \text{média\_novo}é (cada uma com 2 casas).\nFim se.

Exercícios relacionados