Sha256: 2f448db9d75d57fdd76ed964767d10f9b4bab4a3cc9c52790b9ceb0ebe21d678
Contents?: true
Size: 1.93 KB
Versions: 1
Compression:
Stored size: 1.93 KB
Contents
# frozen_string_literal: true require_relative "imc_alves/version" require "json" module ImcAlves class Error < StandardError; end # Classe saúde. Calcular o IMC (Índice de massa corporal) class Pessoa attr_reader :imc, :estado_nutricional, :peso_ideal # 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 @peso_ideal = calc_peso_ideal 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 puts "Peso para alcançar Estado Nutricional Normal: #{@peso_ideal}kg" end end def status_json status = { peso: @peso, altura: @altura, imc: @imc, estado_nutricional: @estado_nutricional, valor_referencia: @est_nut[@estado_nutricional][1], peso_ideal: @peso_ideal } JSON.generate(status) end private def calc_peso_ideal return @peso if @estado_nutricional == :Normal imc = @imc < 18.5 ? 19 : 24.5 (imc * @altura**2).round(1) end 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.2.0 | lib/imc_alves.rb |