Alergias

Alergias

Fácil

Instruções

Dada a pontuação de alergias de uma pessoa, determina se é alérgica a um determinado item e qual é a lista completa das suas alergias.

Um teste de alergias produz uma única pontuação numérica que contém a informação sobre todas as alergias que a pessoa tem (aquelas para as quais foi testada).

A lista de itens testados (e o respetivo valor) é a seguinte:

  • ovos (1)
  • amendoins (2)
  • marisco (4)
  • morangos (8)
  • tomates (16)
  • chocolate (32)
  • pólen (64)
  • gatos (128)

Assim, se o Tom for alérgico a amendoins e chocolate, obtém uma pontuação de 34.

Agora, com apenas essa pontuação de 34, o teu programa deve conseguir dizer:

  • Se o Tom é alérgico a algum dos alergénios listados acima.
  • Todos os alergénios a que o Tom é alérgico.

Nota: uma determinada pontuação pode incluir alergénios não listados acima (ou seja, alergénios com valor 256, 512, 1024, etc.). O teu programa deve ignorar essas partes da pontuação. Por exemplo, se a pontuação de alergias for 257, o teu programa deve indicar apenas a alergia aos ovos (1).

Algumas notas adicionais para a implementação em C++

Este exercício usa o unordered_set Provavelmente precisas da função emplace para adicionar elementos ao conjunto.

Podes deparar-te com const, porque ainda não apareceu no programa. Quando precede uma variável, funciona como uma salvaguarda. As variáveis const não podem ser alteradas. Este exercício também usa a palavra-chave unsigned. Isto duplica o intervalo do número inteiro a que se aplica, mas não deixa que ele se torne negativo.

Editar via GitHub A ligação abre numa nova janela ou separador
C++ Exercism

Estás pronto para começar Alergias?

Inscreve-te no Exercism para aprenderes e dominares C++ com 19 conceitos100 exercícios, e mentoria humana real, tudo grátis.

Mergulha a fundo em Alergias!

Exploramos o deslocamento de bits, a comparação bit a bit e outros conceitos de números binários! Vemos também uma solução que usa correspondência de padrões e uma abordagem interessante em Erlang com recursão.