Einfaches Alterberechnen

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

$tankY

Betreff: Einfaches Alterberechnen

BeitragDi, Apr 04, 2006 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mal ein bisschen herumgespielt und das kam raus:

Code: [AUSKLAPPEN]

; ALTERSBERECHNUNG von Steven C aka $tAnkY

Print "Ich bin "+Alter(4,4,2006)+" Jahre alt!"
Input()

Function Alter(DD,MM,YYYY) ;Hier gibt man das Geb.-Datum an

   Jahr=SplitYear()
   Geburtstag=Jahr-YYYY
   Kontrolle$=Str$(MM)+TransDay$(DD)
   Kontrolle2$=SplitMonth$()+SplitDay$()
   If (Int%(Kontrolle$)<Int%(Kontrolle2$)) Geburtstag=Geburtstag-1 ;Eine Abfrage, falls man schon Geburtstag hatte
   Return Geburtstag

End Function

Function SplitYear() ;Extrahiert das Jahr aus CurrentDate$()

   Time$=CurrentDate$()
   Jahr=Int%(Right$(Time$,4))
   Return Jahr

End Function

Function SplitMonth$() ;Extrahiert den Monat aus CurrentDate$()

   Time$=CurrentDate$()
   Mon=Mid$(Time$,4,3)
   Month$=TransMonth$(Mon)
   Return Month$

End Function

Function SplitDay$() ;Extrahiert den Tag aus CurrentDate$()

   Time$=CurrentDate$()
   Day$=Left(Time$,2)
   Return Day$

End Function

Function TransMonth$(Month$) ;Wandelt den Monat aus SplitMonth$() um

   Select Month$
      Case "Jan" Return "1" : Case "Jul" Return "7"
      Case "Feb" Return "2" : Case "Aug" Return "8"
      Case "Mar" Return "3" : Case "Sep" Return "9"
      Case "Apr" Return "4" : Case "Oct" Return "10"
      Case "May" Return "5" : Case "Nov" Return "11"
      Case "Jun" Return "6" : Case "Dec" Return "12"
   End Select

End Function

;Wandelt den Tag in DD Format um, ansonsten gibts Fehler bei
;(Int%(Kontrolle$)<Int%(Kontrolle2$))
;zB statt 302 gibts dann 32 und das kann Fehler beim Check geben
Function TransDay$(DD)

   If DD<10 Return Str$("0"+DD)
   Return Str$(DD)

End Function


Hab die Kommentare On-The-Fly gemacht.
 

blitzatius

BeitragDi, Apr 04, 2006 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm. Irgendetwas stimmt nicht, oder ich habe einen Geburtstag zu wenig gefeiert. Razz


Gibt mal 6,9,1990 ein. Eignetlich bin ich 15, aber das Programm sagt, ich sei 16 Jahre alt.

Hab mir den Code zwar nicht angeschaut, aber ich bin mir 100% sicher, dass der Fehler im Code liegt

Hip Teen

BeitragDi, Apr 04, 2006 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs mal schnell korrigiert... sind 2 Fehler drinnen Wink
Suche nach
BlitzBasic: [AUSKLAPPEN]
   If (Int%(Kontrolle$)<Int%(Kontrolle2$)) Then Geburtstag=Geburtstag-1 ;Eine Abfrage, falls man schon Geburtstag hatte

und ersetz es durch
BlitzBasic: [AUSKLAPPEN]
   If (Int%(Kontrolle$)>Int%(Kontrolle2$)) Then Geburtstag=Geburtstag-1 ;Eine Abfrage, falls man schon Geburtstag hatte

Dann nach
BlitzBasic: [AUSKLAPPEN]
   Mon=Mid$(Time$,4,3)

suchen und durch
BlitzBasic: [AUSKLAPPEN]
   Mon$=Mid$(Time$,4,3)

ersetzen.

Siehe da, es klappt genau so, wie es sollte Wink Und das lag nur an 2 Zeichen...


Und falls es faule Leute gibt... hier komplett und korrigiert Laughing
BlitzBasic: [AUSKLAPPEN]
Print "Ich Bin "+Alter(18,11,1988)+" Jahre alt!"
Input()

Function Alter(DD,MM,YYYY) ;Hier gibt man das Geb.-Datum an
Jahr=SplitYear()
Geburtstag=Jahr-YYYY
Kontrolle$=Str$(MM)+TransDay$(DD)
Kontrolle2$=SplitMonth$()+SplitDay$()
If (Int%(Kontrolle$)>Int%(Kontrolle2$)) Then Geburtstag=Geburtstag-1 ;Eine Abfrage, falls man schon Geburtstag hatte
Return Geburtstag

End Function

Function SplitYear() ;Extrahiert das Jahr aus CurrentDate$()

Time$=CurrentDate$()
Jahr=Int%(Right$(Time$,4))
Return Jahr

End Function

Function SplitMonth$() ;Extrahiert den Monat aus CurrentDate$()
Stop
Time$=CurrentDate$()
Mon$=Mid$(Time$,4,3)
Month$=TransMonth$(Mon)
Return Month$

End Function

Function SplitDay$() ;Extrahiert den Tag aus CurrentDate$()

Time$=CurrentDate$()
Day$=Left(Time$,2)
Return Day$

End Function

Function TransMonth$(Month$) ;Wandelt den Monat aus SplitMonth$() um

Select Month$
Case "Jan" Return "1" : Case "Jul" Return "7"
Case "Feb" Return "2" : Case "Aug" Return "8"
Case "Mar" Return "3" : Case "Sep" Return "9"
Case "Apr" Return "4" : Case "Oct" Return "10"
Case "May" Return "5" : Case "Nov" Return "11"
Case "Jun" Return "6" : Case "Dec" Return "12"
End Select

End Function

;Wandelt den Tag in DD Format um, ansonsten gibts Fehler bei
;(Int%(Kontrolle$)<Int%(Kontrolle2$))
;zB statt 302 gibts dann 32 und das kann Fehler beim Check geben
Function TransDay$(DD)

If DD<10 Return Str$("0"+DD)
Return Str$(DD)

End Function
Spruch der Woche: "Ahh, ein neues Gesicht?!" - "Nein, das hab ich schon länger"
 

$tankY

BeitragDi, Apr 04, 2006 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, wäre mir sonst nicht aufgefallen, da ich es aus einem PHP Code habe und es dort bessere Funktionen für Zeit und Arrays gibt.
Wie ich sehe funktioniert der BB-Code^^

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group