Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
El Reto De Los Calendarios
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje El Reto De Los Calendarios 
 
Para un programa del curro, he tenido que hacer un calculador de plazos que calcule en días o meses y en días naturales, o laborables o judiciales (sábados no laborables).

Me he divertido un montón haciendo el algoritmo del cálculo y se me ha ocurrido que puede ser divertido para todos. Decir que no me ha gustado la solución que he hecho, aunque funciona, pero me gustaría ver, si alguno se atreve con el reto, cómo lo enfrenta.

Para hacerlo más fácil, os adjunto un proyecto que ya lo lleva todo salvo el algoritmo:
 captura_de_pantalla_de_2015_04_10_22_17_07

Por supuesto, el día calculado tampoco puede ser ni festivo ni no laborable según el tipo de cómputo.
Se me animen que no es tan difícil y es divertido. Mi solución no tiene más de 30 líneas.

Retocalendarios-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Retocalendarios-0.0.1.tar.gz
Tamaño: 4.3 KB
Descargado: 82 veces
Retocalendarios-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Retocalendarios-0.0.1.tar.gz
Tamaño: 4.3 KB
Descargado: 82 veces
Retocalendarios-0.0.1.tar.gz
Descripción:  
Descargar
Nombre del archivo: Retocalendarios-0.0.1.tar.gz
Tamaño: 4.3 KB
Descargado: 82 veces

 



 
última edición por shordi el Sabado, 11 Abril 2015, 09:04; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Reto De Los Calendarios 
 
¿ Cómo te apañaste con los festivos ?. ¿ Festivos nacionales ?.
Si hablamos de fiestas de cada región, varía un poco la cosa. Jeje..:-D

Día hábil y natural

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Sabado, 11 Abril 2015, 08:53; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Reto De Los Calendarios 
 
Citar:
¿Cómo te apañaste con los festivos ?. ¿ Festivos nacionales ?.
Si hablamos de fiestas de cada región, varía un poco la cosa.


Pues con una tabla de festivos (en el ejemplo del reto la función la hace el listbox, al que he tecleado los festivos de Castilla-la mancha para 2015). Nosotros trabajamos sólo en Castilla-La Mancha y Madrid, por lo del Supremo y la audiencia Nacional, pero se puede introducir cualquier comunidad Autónoma. A lo de las fiestas locales no he llegado, pero tras comentarlo con los abogados hemos llegado a la conclusión de que no es importante: si hay alguna fiesta local, símplemente se calcula un plazo inferior en un día al plazo real, cosa que no es grave. (Al revés sería terrible)
Esta es la pantalla del programa que les permite reiniciar el año y meter las fiestas haciendo doble click en cada día.
 captura_de_pantalla_de_2015_04_11_09_57_02
Ellos seleccionan la comunidad Autónoma y meten todas las fiestas. Se tarda unos dos minutos al inicio del año.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: El Reto De Los Calendarios 
 
Buena idea el uso  de la tabla.
Hay fiestas como la semana santa que se puede calcular. En este ejemplo se calcula el domingo de pascua.

'El algoritmo de esta aplicación permite determinar la fecha de la Pascua (día y mes).
'Es valido desde el año 1583, siguiente a la implantación del calendario Gregoriano.(15/10/1582) "dd/mm/yy".

'El calendario gregoriano acumula un error de un día al cabo de 3314 años.
'Luego el equinoccio de primavera (21 de marzo) del año 1582 + 3314 = 4896 tendra lugar el dia
'20 de marzo (un día antes)

'Por este motivo este algoritmo no es valido para calcular la Pascua de los años posteriores al 4896.
'
'Las fechas extremas de la Pascua son el 22 de marzo (cae en esta fecha si el 22 es domingo) y 25 de Abril
'(cae en esta fecha si el 20 de Marzo es plenilunio.)

'Luego la Pascua puede caer en cualquier día que se encuentre dentro de ambas fechas mencionada (35 días de variación)

Private meses As String[] = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"]
Private q As Integer
Private z As Integer
Private r As Integer
Private y As Integer

Public Sub _new()
  
End

Public Sub Form_Open()
  
  Me.Center
  
End

Public Sub BtnAyuda_Click()
  
  FormAyuda.ShowModal()  
  
End

Public Sub btnCalcular_Click()

  Dim a, b, c, d, e, f, g, h, i, k, j, l, m, n, x As Integer
  
  If IsNumber(txtyear.Text) Then
    x = CInt(txtyear.Text)
  Else
    txtyear.Text = ""
    Return
  Endif
  
  If x < 1583 Or x >= (1582 + 3314) Then
    txtyear.Text = ""
    Return  
  Endif
  
  z = x
  y = 19
  Calculo
  a = r
  
  z = x
  y = 100
  Calculo
  b = q
  c = r
  
  z = b
  y = 4
  Calculo
  d = q
  e = r
  
  z = b + 8
  y = 25
  Calculo
  
  'Limite
  z = 32 + 2 * e + 2 * i - h - j
  y = 7
  Calculo
  k = r
  
  z = a + 11 + h + 22 * k  
  y = 451
  Calculo
  l = q
  
  z = h + k - 7 * l + 114
  y = 31
  Calculo
  m = q - 1 'resto 1 para indice 0  
  n = r
  'Limite
  f = q
  
  z = b - f + 1
  y = 3
  Calculo
  g = q
  
  z = 19 * a + b - d - g + 15
  y = 30
  Calculo
  h = r
  
  z = c
  y = 4
  Calculo
  i = q
  j = r
  
  z = 32 + 2 * e + 2 * i - h - j
  y = 7
  Calculo
  k = r
  
  z = a + 11 + h + 22 * k  
  y = 451
  Calculo
  l = q
  
  z = h + k - 7 * l + 114
  y = 31
  Calculo
  m = q - 1 'resto 1 para indice 0
  n = r
  
  Message.Info("La pascua del año " & x & " es el día " & (n + 1) & " del més de " & meses[m])
  
End

Public Sub Calculo()
  
  q = Int(z / y)  
  r = z Mod y
  
End
 


Habría que restar siete días para el Domingo de Ramos.

Saludos

FechaSemanaSanta2.tar.gz
Descripción:  
Descargar
Nombre del archivo: FechaSemanaSanta2.tar.gz
Tamaño: 8.13 KB
Descargado: 83 veces
FechaSemanaSanta2.tar.gz
Descripción:  
Descargar
Nombre del archivo: FechaSemanaSanta2.tar.gz
Tamaño: 8.13 KB
Descargado: 83 veces
FechaSemanaSanta2.tar.gz
Descripción:  
Descargar
Nombre del archivo: FechaSemanaSanta2.tar.gz
Tamaño: 8.13 KB
Descargado: 83 veces

 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Reto Volados razaAztk Retos de programación 2 Sabado, 20 Septiembre 2014, 18:49 Ver último mensaje
razaAztk
No hay nuevos mensajes Reto De La Ultratumba vuott Retos de programación 11 Lunes, 29 Septiembre 2014, 20:57 Ver último mensaje
Shell
No hay nuevos mensajes [Idea] Un Programa Interesante Pero Que Yo... portaro General 9 Domingo, 07 Enero 2018, 22:59 Ver último mensaje
portaro
No hay nuevos mensajes New Cycle - Calendarios Con PCAL tincho Aplicaciones/Fragmentos de Código 3 Viernes, 12 Enero 2018, 21:45 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron