Sha256: 45ad310c8cca206ee7d366d09e9555d0c4f8759d0c3d01d46a5e671674cb73c2

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require_relative "imc_alves/version"

module ImcAlves
  class Error < StandardError; end

  # Classe saúde. Calcular o IMC (Índice de massa corporal)
  class Pessoa
    attr_reader :imc, :estado_nutricional

    # peso | altura
    def initialize(peso, altura)
      @peso = peso
      @altura = altura
      @imc = calc_imc

      @est_nut = {
        'Desnutrição Grau V': [10, "< 10"],
        'Desnutrição Grau IV': [13, "10 a 12.9"],
        'Desnutrição Grau III': [16, "13 a 15.9"],
        'Desnutrição Grau II': [17, "16 a 16.9"],
        'Desnutrição Grau I': [18.5, "17 a 18.4"],
        'Normal': [25, "18.5 a 24.9"],
        'Pré-obesidade': [30, "25 a 29.9"],
        'Obesidade Grau I': [35, "30 a 34.9"],
        'Obesidade Grau II': [40, "35 a 39.9"],
        'Obesidade Grau III': [1000, "> 40"]
      }

      @estado_nutricional = est_nutri
    end

    def status
      puts "IMC: #{@imc}"
      puts "Estado Nutricional: #{@estado_nutricional}"
      puts "Valor de referência: #{@est_nut[@estado_nutricional][1]}"
      if @estado_nutricional == :Normal
        puts "Parabéns! Você está no peso ideal"
      else
        peso = (24 * @altura**2).round(1)
        puts "Seu peso ideal é #{peso}kg"
      end
    end

    private

    def calc_imc
      (@peso / @altura**2).round(2)
    end

    def est_nutri
      @est_nut.each do |k, v|
        return k if @imc < v[0]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
imc_alves-0.1.2 lib/imc_alves.rb