Skip to content

Instantly share code, notes, and snippets.

@yugi386
Created December 28, 2011 14:16
Show Gist options
  • Save yugi386/1528078 to your computer and use it in GitHub Desktop.
Save yugi386/1528078 to your computer and use it in GitHub Desktop.
Exercício de Validação de Mẽs - Referência gits https://gist.github.com/1182380
####################################################
# FUNCAO DE VALIDAÇÃO DE MÊS A TÍTULO DE EXERCÍCIO
# PROGRAMADOR: YUGI
# DATA: 28/12/2011
####################################################
# OBJETIVO:
# Não deve aceitar meses consecutivos dentro do mesmo ano
#
def valid_months(vet)
vet.each do |data|
if data.length != 7
puts "Existe ao menos uma data com formato inválido no parâmetro..."
puts "Exemplo de Formato válido: 01/2011 - Mês e Ano"
exit
end
if data[2,1] != "/"
puts "Existe ao menos uma data com formato inválido no parâmetro..."
puts "Exemplo de Formato válido: 01/2011 - Mês e Ano"
exit
end
if data[0,2].to_i <=0 || data[0,2].to_i > 12
puts "O Mês de uma das datas é inválido..."
exit
end
end
tam = vet.size - 1
for cont in (0..tam)
tmp = vet[cont]
tmp = tmp[3,4] + "/" + tmp[0,2]
vet[cont] = tmp
end
vet = vet.sort
data = vet[0]
mes = data[5,2]
ano = data[0,4]
erro = 0
for cont in (1..tam)
data = vet[cont]
xmes = data[5,2]
xano = data[0,4]
if xano == ano && xmes.to_i == mes.to_i + 1
erro = 1
break
end
mes = xmes
ano = xano
end
if erro == 0
puts "Data Válida"
return TRUE
else
puts "Data Inválida"
return FALSE
end
end
# ==========================================================================
# Validando as datas:
data = ["03/2002","01/2000","03/2000","04/2001","04/2002"]
valid_months(data)
data = ["04/2002","01/2000","03/2000","04/2001","04/2002"]
valid_months(data)
data = ["01/2002","01/2002"] # retorna verdadeiro porque a regra é se os meses forem consecutivos dentro do mesmo ano é inválido e não iguais...
valid_months(data)
data = ["01/2002","01/2002","03/2040","02/2002"]
valid_months(data)
data = ["01/2002","02/2003","03/2004"]
valid_months(data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment