Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 997

 

1 Zum Seitenanfang

Dienstag, 7. April 2009, 00:12

C# Kalendar

Hi leute ich muss ein kleines programm für die schule schreiben und würde gerne ein paar infos erfahren habe gegoogled aber ständig kamen irgendwelche ms excel lösungen. also ich muss ein kalendar in c#(konsolen ebene) erstellen. der benutzer soll ein monat(zb 3) und ein jahr (zb 1983) eingeben und dann soll der märz 83 mit wochentagen ausgegeben werden etwa so:

MO | Di | Mi | Do | Fr | Sa | So
1 | 2 | 3... uw.

nun wollte ich fragen ob eventuell einer von euch weis wie ich den ersten wochentag eines monats ermittle und wie ich schaltjahre ermitteln kann das was ich bis jetzt heraufand war

jahr mod 4 dann mod 100 dann mod 400 und wenn ganzzahliges ergebnis rauskommt dann schaltjahr(vllt habe ich es auch falsch verstanden) also könnte mir mal da einer helfen und mir sagen wie ich
a: ersten wochentag im monat ermittle
b: anzahl der tag im monat
c: schaltjahre
d: eventuell kalendar woche

ich möchte keine quellcodes sehen sondern nur denkanstöße und ich darf nicht von .net intergrierte funktionen verwenden

MFG
Mein kleines Projekt
-Cruel Online-
 

okki

unregistriert

2 Zum Seitenanfang

Dienstag, 7. April 2009, 08:53

du bist schon auf dem richtigen weg. als erstes bestimmten, ob das jahr ein schaltjahr ist.
jedes vierte jahr ist ein schaltjahr, dh. wenn eine beliebiges jahr durch vier teilbar ist, dann ist dieses jahr ein schaltjahr.

Quellcode

1
schaltjahr = (jahr mod 4);

aber jedes 100. jahr ist kein schaltjahr.

Quellcode

1
schaltjahr = (jahr mod 4 AND NOT(jahr mod 100))

aber jedes vierhunderste jahr wiederum doch. einfach weiterdenken und die formel noch vervollständigen :-)
diese berechnung kannst du in eine funktion bringen, zb istSchaltjahr(jahr).

daraus kannst du zwei funktion tageImJahr(jahr) und tageImMonat(jahr, monat) erstellen, die die anzahl der tage eines jahres/eines monats zurückgibt (abhängig von istSchaltjahr)

dann legst du du ein wochentag als ausgangsdatum fest, am besten irgendein neujahr (1.1.), von dem du den wochentag kennst. (unterschieldichen kalender (gregorianischer / julianischer) berücksichtigen). und jetzt nurnoch addieren: alle jahre die zwischen deinem eingegeben jahr und dem ausgangsdatum liegen, dazu noch die tageImMonat und den aktuellen tag addiert und fast fertig.

so ungefähr könnte ein (nicht gerade effizienter, aber leicht verständlicher) algorithmus aussehen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »okki« (7. April 2009, 08:53)

 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 997

 

3 Zum Seitenanfang

Dienstag, 7. April 2009, 09:07

ehm ich habe so den windows kalendar angeschaut und mir ist aufgefallen dass jeder monat die selbe anzahl der tag hat bis auf den februar der hat entweder 28 oder 29 je nach schaltjahr. habe ich mich verguckt oder stimmt das wirklich dass alle monate selbe anzahl an tagen haben
Mein kleines Projekt
-Cruel Online-
 

okki

unregistriert

4 Zum Seitenanfang

Dienstag, 7. April 2009, 12:10

die tage im monat sind konstant, also der januar hat z.b. immer 31 tage, der september hingegen jedes jahr 30. nur der februar variert, wie du schon festgestellt hast. da gibst auch ne schöne "faust"-regel, die kannst du bestimmt auch googlen.

grüße okki
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 997

 

5 Zum Seitenanfang

Dienstag, 14. April 2009, 14:23

so ich habe mal im internet eine mathematische formel herausgeunden wie ich den ersten wochentag im monat errechne es funktioniert auch wunderbar nur mein problem ist wieso funktioniert es?? ich addiere da komische zahlen und weis net wofür die sind hier mal der ausschnitt:

  Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int iLastMonth;
            int iLastYear;
            int iResult;
            int iFirstDay = 1;
            if (this.iMonth < 3)
            {
                iLastMonth = this.iMonth + 12;
                iLastYear = this.iYear - 1;
            }
            else
            {
                iLastMonth = this.iMonth;
                iLastYear = this.iYear;
            }
            iLastMonth++;
            iResult = iLastYear * 365 + (int)Math.Floor((double)iLastYear / 4) + (int)Math.Floor(((double)iLastMonth * 306) / 10) + iFirstDay + 1720995;
            
            if (iResult > 2299170)
            {
                iResult = iResult - (int)Math.Floor((double)iLastYear / 100) + (int)Math.Floor((double)iLastYear / 400) + 2;
            }
            else
            {
                if(iResult > 2299160)
                {
                    iResult = iResult - (int)Math.Floor((double)iLastYear / 100) + (int)Math.Floor((double)iLastYear / 400) + 2 + 10;
                }
            }
            iResult = iResult % 7;
            return iResult+1;


egal welches jahr ich eingebe, es kommt immer das richtige raus aber was haben die zahlen wie 2299160 usw zu bedeuten??

MFG
Mein kleines Projekt
-Cruel Online-
 

okki

unregistriert

6 Zum Seitenanfang

Donnerstag, 16. April 2009, 18:00

das ist die datumsgrenze, an der vom julianischen (2299160 Tage ab 1.1.0, irgendwann im 18. jahrhundert) auf gregorianischen kalender umgestellt wurde. der gregorianische kalender geht wiederum 10 tage vorraus, deshalb sind zwei if-schliefen mit verschiedenen bedingungen zu sehen.

ich denk du wolltest keinen code sehen!? wenn du eleganter programmieren willst, dann kannst du auch nach der gaußschen wochentagsberechnung googlen oder bei wiki nachschlagen, da steht schon ne menge drin.

grüße okki
 

Ähnliche Themen