Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio: Calculadora de despesas

Bem, vamos lá, eu já uso uma calculadora de despesas minha e a medida que fui usando acabei fazendo over engineering, vou manter simples aqui.

Mobills, Organizze, PicPay, todos os apps de finanças BR usam centavos como inteiro internamente, para nao ter problema no float.

Algoritmo:

total_centavos = 0
lista_despesas = [] # guardar para mostrar no final

repetir:
entrada = pedir("valor da despesa (ou 'fim' para encerrar)")
se entrada == "fim":
sair do loop
valor_centavos = converter_para_centavos(entrada)
se valor_centavos é inválido ou < 0:
avisar erro e continuar
adicionar (categoria, valor_centavos) em lista_despesas
total_centavos = total_centavos + valor_centavos

mostrar lista_despesas
mostrar "Total: R$ " + formatar(total_centavos)

A próxima evolução natural é guardar categoria por despesa (mercado, transporte, lazer):

lista_despesas = []
...
categoria = pedir("categoria")
lista_despesas.adicionar((categoria, valor))

Edição e remoção

Por último, permitir corrigir um valor digitado errado (digitou 1500 em vez de 150) sem recomeçar. Aqui já entra
estado mais complexo índice da despesa, confirmação, recálculo do total.

  1. Comece com o total igual a 0.
  2. Solicite a categoria.
  3. Solicite um valor de despesa ao usuário.
  4. Verifique se o valor digitado é válido:
    a. Se não for um número, avise o erro e volte ao passo 2.
    b. Se for um número negativo, avise o erro e volte ao passo 2.
    c. Confirmar valor com o usuário.
  5. Se o valor for igual a 0, vá para o passo 7.
  6. Caso contrário:
    a. Some o valor ao total.
    b. Volte ao passo 2.
  7. Exiba o total acumulado para o usuário.
2 respostas

Oii Levi, tudo bem?

Obrigada por compartilhar seu desenvolvimento no fórum — a abordagem de armazenar valores em centavos como inteiro é uma prática real usada em sistemas financeiros sérios, e vale muito a pena destacar isso para outros alunos que lerem o tópico.

Seu algoritmo cobre bem o fluxo principal: validação de entrada, acúmulo do total e exibição ao final. As evoluções que você listou (categorias, edição/remoção) são exatamente o caminho natural para um sistema mais robusto, e você já antecipou os pontos de complexidade certos, como o recálculo do total após uma edição.

Conte com a Alura para evoluir seus estudos. Fico à disposição.

Bons estudos!

Sucesso

Imagem da comunidade
solução!

Obrigado pelo retorno, fico feliz que tenha ficado claro.