Olá, Laerte, como vai?
Seu algoritmo atende bem à proposta e mostra uma boa organização ao separar responsabilidades em funções, principalmente ao isolar a leitura de itens e a aplicação de desconto. A lógica geral está clara e funcional dentro do que foi proposto no desafio, e é positivo ver o uso de funções desde já.
Há apenas um ponto que pode ser ajustado para deixar a solução mais consistente. O valor lido para a variável cadastrado é informado como True ou False, mas na função aplicarDesconto a verificação é feita comparando com o texto "S", o que impede o desconto de ser aplicado corretamente.
Obrigado por compartilhar sua solução, continue trazendo suas implementações para o fórum, que está sempre à disposição para trocas e aprendizados.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!