bisestile6

considerazioni su anno bisestile e suo riconoscimento mediante due metodi diversi


anno bisestile
condizioni:deve essere pari,divisibile per 4, divisibile anche per 
400 se secolare( xx00...1200,1600,2000 si ....1300,1400,1500 no)
prova:
vedi se divisibile per 4 ? resto4=anno mod 4 = 0 >> si
      vedi se divisibile per 100 ?resto100=anno mod 100 =0 >> si
      vedi se edivisibile per 400 :?resto400=anno mod 400 = 0 >> si
risulta bisestile, altrimenti non bisestile
if resto4=0 then possibile bisestile
if resto4=0 and resto100=0 and resto400=0 :bisestile
if resto4=0 and resto100=0 and resto400<>0 :non bisestile

anno bisestile possiede data 2/29/anno dopo data 2/28/anno
se aggiungo 1 giorno alla data 2/28/anno e ottengo 2/29/anno vuol dire che anno=bisestile
se ottengo invece 3/1/anno (cambio mese) significa che anno <> bisestile

nella listbox1 a sinistra si visualizzano risultati in funzione del primo metodo
nella listbox2 a destra si visualizzano( e confrontano) risultati con DateSerial

vedi bisestile6.ppt

rem codice per calcolo con primo metodo

Private Sub CommandButton1_Click()
Dim resto4, resto100, resto400 As Integer
Dim anno As Integer
anno = TextBox1.Value
ListBox1.AddItem ("anno da verificare=" & anno)
resto4 = anno Mod 4
resto100 = anno Mod 100
resto400 = anno Mod 400
If resto4 = 0 Then
ListBox1.AddItem ("possibile bisestile:divisibile per 4")
Else
ListBox1.AddItem ("non bisestile:non divisibile per 4")
End If
If resto4 = 0 And resto100 = 0 And resto400 = 0 Then
ListBox1.AddItem ("anno bisestile:divisibile per 4 e per 400")
Else
If resto4 = 0 And resto100 = 0 And resto400 <> 0 Then
ListBox1.AddItem ("non bisestile:divisibile per 4 ma non per 400")
End If
End If
ListBox1.AddItem ("---------------")
Rem conferma con altro metodo che usa DateSerial
verifica (anno)
End Sub

Private Sub CommandButton2_Click()
TextBox1 = ""
End Sub

Private Sub CommandButton3_Click()
TextBox1 = ""
ListBox1.Clear
ListBox2.Clear
End Sub

rem ricerca se anno bisestile usando funzione DateSerial


Private Function verifica(anno As Integer) As Boolean
Dim data As Date
Dim mese2 As Integer
data = DateSerial(anno, 2, 28)
data = data + 1
mese2 = Month(data)
If Month(data) = 2 Then
verifica = True
ListBox2.AddItem (data & " bisestile " & Month(data))
Else
verifica = False
ListBox2.AddItem (data & " non bisestile " & Month(data))
End If
End Function