Welcher Tag war das nochmal?

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

StepTiger

Betreff: Welcher Tag war das nochmal?

BeitragSa, Aug 12, 2006 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ein kleiner Code, um zu schauen, was für ein Wochentag der angegebene war.

Code: [AUSKLAPPEN]
show=0

Dim month(12)
Dim tday$(7)

month(1)=31
month(2)=28
month(3)=31
month(4)=30
month(5)=31
month(6)=30
month(7)=31
month(8)=31
month(9)=30
month(10)=31
month(11)=30
month(12)=31

tday$(1)="Montag"
tday$(2)="Dienstag"
tday$(3)="Mittwoch"
tday$(4)="Donnerstag"
tday$(5)="Freitag"
tday$(6)="Samstag"
tday$(7)="Sonntag"


year=2006
mon=8
day=12
week=6

tarday=Input("Tag? ")
tarmon=Input("Monat? ")
taryear=Input("Jahr? ")

startsumme=year*365+mon*30+day
endsumme=taryear*365+tarmon*30+tarday

While Not(tarmon=mon And tarday=day And taryear=year) And (Not KeyDown(1))
   If taryear<year Or (tarmon<mon And taryear=year) Or (tarday<day And tarmon=mon And taryear=year)
      day=day-1
      week=week-1
   Else
      day=day+1
      week=week+1
   EndIf
   If week>7 Then week=1
   If week<1 Then week=7
   If day>month(mon) Then day=1:mon=mon+1
   If day<1
      mon=mon-1
      day=month(mon)
      If mon<1
         mon=12
         day=month(12)
         year=year-1
         bla=year/4
         bla2#=year/4.
         bla3=year/100
         bla4#=year/100.
         bla5=year/400
         bla6#=year/400.
         If bla=bla2# And (bla3<>bla4# Or bla5=bla6#)
            month(2)=29
         Else
            month(2)=28
         EndIf
      Else
         day=month(mon)
      EndIf
   EndIf

   If mon<1
      mon=12
      day=month(12)
      year=year-1
      bla=year/4
      bla2#=year/4.
      bla3=year/100
      bla4#=year/100.
      bla5=year/400
      bla6#=year/400.
      If bla=bla2# And (bla3<>bla4# Or bla5=bla6#)
         month(2)=29
      Else
         month(2)=28
      EndIf
   EndIf

   If mon>12
      mon=1
      year=year+1
      bla=year/4
      bla2#=year/4.
      bla3=year/100
      bla4#=year/100.
      bla5=year/400
      bla6#=year/400.
      If bla=bla2# And (bla3<>bla4# Or bla5=bla6#)
         month(2)=29
      Else
         month(2)=28
      EndIf
   EndIf

   If show=1
      Print day
      Print mon
      Print year
      Print ""
   EndIf

Wend

Print "Der "+tarday+"."+tarmon+"."+taryear+" ist ein "+tday$(week)+"."
WaitKey
End


könnt übrigens auch Werte benutzen, die noch folgen.

*edit* Ich bin an einem Mittwoch geboren Smile
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
  • Zuletzt bearbeitet von StepTiger am Sa, Aug 12, 2006 21:39, insgesamt 3-mal bearbeitet

Dante

BeitragSa, Aug 12, 2006 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
klappt irgendwie nicht bie mir =(
läd nur ohne ende aber kommt nix bei rum

StepTiger

BeitragSa, Aug 12, 2006 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
hups! Was beim verändern vergessen. Geht jetzt.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Bud

BeitragSa, Aug 12, 2006 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist cool, doch bei meinem Geburtstag hat er sich um einen Tag verrechnet (Wurde an einem Dienstag geboren, doch mir wird Montag angezeigt)...

StepTiger

BeitragSa, Aug 12, 2006 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
???
der kann sich auf 1000 Jahre nicht verrechnen (theorethisch gesehen) ^^

sag mal dein geburtsdatum. Meins stimmt (ich wusste schon von einem Jahrhundertkalender, dass ich am Dienstag geboren bin Smile)
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

StepTiger

BeitragSa, Aug 12, 2006 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
hab den fehler gemerkt.

Ich lad den neuen quellcode in so 10 minuten hoch
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

StepTiger

BeitragSa, Aug 12, 2006 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs geupdated.

Bin doch an einem Mittwoch geboren (habs im inet überprüft, aber was hab ich bei dem jahrhundertkalender falsch gemacht? ^^)
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Bud

BeitragSa, Aug 12, 2006 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja jetzt stimmts Very Happy Juhu ich hab dieses Jahr an nem Freitag geburtstag Very Happy
Sehr nützlich, der Code ^^

BladeRunner

Moderator

BeitragSa, Aug 12, 2006 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Use the fuckin' Edit Button, oder ich Close.
double posts sind böse. Triples sind die Pest.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Rone

BeitragSo, Aug 13, 2006 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
moin,

hatte vor ein paar Tagen genau das selbe gemacht, schaut nur nen bisschen anders aus... Smile

Poste den Code einfach mal hier, um nicht nen extra Thread aufzumachen:

Code: [AUSKLAPPEN]

Global MonatsTage:Int[]=[31,28,31,30,31,30,31,31,30,31,30,31]
Global Tage :String[] = ["Montag" , "Dienstag" , "Mittwoch" , "Donnerstag" , "Freitag" , "Samstag" , "Sonntag"]

Function SchaltJahr:Int(jahr:Int)
   Local value:Int = (Not(jahr Mod 4) And ( (jahr Mod 100 ) Or Not(jahr Mod 400) ) )
   Return  (value>0)
End Function

Function ErsterTagImJahr:Int(jahr:Int)
   Local wert,i:Int = 0
   If jahr < 2007 Then
      For i = 2007 To jahr+1 Step - 1
         wert = ( (wert - ( 1 + SchaltJahr(i-1) ) ) + 7 ) Mod 7
      Next
   ElseIf jahr > 2007 Then
      For i = 2007 To jahr-1 Step + 1
         wert = ( (wert + ( 1 + SchaltJahr(i-1) ) ) + 7 ) Mod 7
      Next
   EndIf
   Return WERT
End Function

Function Woche:Int(jahr:Int , Monat:Int , Tag:Int)
   For Local i:Int = 0 To Monat - 2
      Tag :+ ( MonatsTage[i] )
   Next
   If Monat > 2 Or ( Monat=2 And Tag >28 ) Then Tag:+SchaltJahr(jahr)
   Return Int( ( ErsterTagImJahr(jahr) + (Tag - 1) ) / 7 ) + 1
End Function


Function Tag:Int(jahr:Int , Monat:Int , Tag:Int)
   Local tmpTag:Int=Tag
   For Local i:Int = 0 To Monat - 2
      Tag :+ ( MonatsTage[i] )
   Next
   If Monat > 2 Or ( Monat=2 And tmpTag >28 ) Then Tag:+SchaltJahr(jahr)
   Return Int( ( ErsterTagImJahr(jahr) + (Tag -1) ) Mod 7 )
End Function

'###########################################################

Local sTag:String = Input("Tag: ")
Local sMonat:String = Input("Monat: ")
Local sJahr:String = Input("Jahr: ")
Print "Der "+sTag+"."+sMonat+"."+sJahr+", war ein "+Tage[Tag(sJAhr.ToInt(),sMonat.ToInt(),sTag.ToInt())]
End


mfg

StepTiger

BeitragSo, Aug 13, 2006 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist aber kein BB

rechnet das Schaltjahre richtig ein?

1. alle durch 4 teilbaren Jahre sind Schaltjahre
2. alle durch 100 teilbaren Jahre sind keine Schaltjahre
3. alle durch 400 teilbaren Jahre sind wiederum Schaltjahre
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Rone

BeitragSo, Aug 13, 2006 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Is mir klar dass das BMax ist, allerdings kann man das in ca.30s ändern...

Zitat:
rechnet das Schaltjahre richtig ein?

1. alle durch 4 teilbaren Jahre sind Schaltjahre
2. alle durch 100 teilbaren Jahre sind keine Schaltjahre
3. alle durch 400 teilbaren Jahre sind wiederum Schaltjahre

na klar...
Code: [AUSKLAPPEN]

Function SchaltJahr(jahr)
   Return  (((jahr Mod 4)=0 And ( (jahr Mod 100 )>0 Or (jahr Mod 400)=0 ) )>0)
End Function



So, hier nochmal BB konform:
Code: [AUSKLAPPEN]

Dim monatsTage(12)
Dim tage$(7)
monatsTage(0)=31 : monatsTage(1)=28  : monatsTage(2)=31 : monatsTage(3)=30 : monatsTage(4)=31 : monatsTage(5)=30
monatsTage(6)=31 : monatsTage(7)=31  : monatsTage(8)=30 : monatsTage(9)=31 : monatsTage(10)=30 : monatsTage(11)=31

tage$(0)="Montag" : tage$(1)="Dienstag"  : tage$(2)="Mittwoch"  : tage$(3)="Donnerstag" 
tage$(4)="Freitag"  : tage$(5)="Samstag" : tage$(6)="Sonntag"

Function SchaltJahr(jahr)
   Return  (((jahr Mod 4)=0 And ( (jahr Mod 100 )>0 Or (jahr Mod 400)=0 ) )>0)
End Function 

Function ErsterTagImJahr(jahr)
   If jahr < 2007 Then
      For i = 2007 To jahr+1 Step - 1
         wert = ( (wert - ( 1 + SchaltJahr(i-1) ) ) + 7 ) Mod 7
      Next
   ElseIf jahr > 2007 Then
      For i = 2007 To jahr-1 Step + 1
         wert = ( (wert + ( 1 + SchaltJahr(i-1) ) ) + 7 ) Mod 7
      Next
   EndIf
   Return WERT
End Function

Function Woche(jahr , Monat , Tag)
   For i = 0 To Monat - 2
      Tag = Tag + ( MonatsTage(i) )
   Next
   If Monat > 2 Or ( Monat=2 And Tag >28 ) Then Tag=Tag+SchaltJahr(jahr)
   Return Int( ( ErsterTagImJahr(jahr) + (Tag - 1) ) / 7 ) + 1
End Function

Function Tag(jahr , Monat , Tag)
   tmpTag=Tag
   For i = 0 To Monat - 2
      Tag = Tag + ( MonatsTage(i) )
   Next
   If Monat > 2 Or ( Monat=2 And tmpTag >28 ) Then Tag=Tag+SchaltJahr(jahr)
   Return Int( ( ErsterTagImJahr(jahr) + (Tag -1) ) Mod 7 )
End Function

;########################################################################################

For i = 1890 To 2010
   Print i+"-->"+SchaltJahr(i)
Next

sTag = Input("Tag: ")
sMonat = Input("Monat: ")
sJahr = Input("Jahr: ")

Print "Der "+sTag+"."+sMonat+"."+sJahr+", war ein "+Tage(Tag(sJAhr,sMonat,sTag))
WaitKey
End



mfg

D2006

Administrator

BeitragSo, Aug 13, 2006 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
owney by...

BlitzBasic: [AUSKLAPPEN]
a = (14-monat)/12
y = jahr - a
m = monat + (12*a) - 2
weekd = (tag+y+(y/4)-(y/100)+y/400+(31*m)/12) Mod 7


Select weekd
Case 0
wochentag$="Sonntag"
Case 1
wochentag$="Montag"
Case 2
wochentag$="Dienstag"
Case 3
wochentag$="Mittwoch"
Case 4
wochentag$="Donnerstag"
Case 5
wochentag$="Freitag"
Case 6
wochentag$="Samstag"
End Select

(Den Code hab ich von soli und mittels der Forensuche gefunden)

MfG
D2006
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

StepTiger

BeitragSo, Aug 13, 2006 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ist ja vieeeeeeeeeel zu einfach *lol*
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group