Entwickler-Ecke
C# - Die Sprache - C# Kalenderblatt
Smokee - Do 09.12.10 15:51
Titel: C# Kalenderblatt
Hallo,
ich bin Newbie in Sachen C# und soll nun ein Kalenderblatt programmieren welches nach Eingabe des Jahres und des Monats, ein Kalenderblatt für zum Beispiel März 2018 ausgibt. Ich bin auch schon ziemlich weit nur weis ich jetzt nicht weiter. Hier der Auszug aus dem Quellcode:
C#-Quelltext
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: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75:
| short getWochentag(int uTag,int uMonat,int uJahr, int gt,int lt,int _ASSERT) { int[] arrMonatsOffset = new int[] {0, 1, 4, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5};
int cbJahrhundertOffset = 0; [b] _ASSERT(uTag >) 0; _ASSERT(uTag <) 31; _ASSERT(uMonat >) 0; _ASSERT(uMonat <) 12; _ASSERT(uJahr >) 1600;[/b]
[b]if ( uTag >) 31; || (uMonat >) 12) || (uMonat == 0) || (uTag == 0) || (uJahr <) 1600); return -1;
if (uJahr == 1600) (uMonat <) 2); return -1;
if ( (uJahr < 1700) || ((uJahr == 1700) (uMonat <= 2)) ) { cbJahrhundertOffset = 6; } else if ( (uJahr < 1800) || ((uJahr == 1800) (uMonat <)) 2; { cbJahrhundertOffset = 4; } else if ( (uJahr < 1900) || ((uJahr == 1900) && (uMonat <= 2)) ) { cbJahrhundertOffset = 2; } else if ( (uJahr < 2000) || ((uJahr == 2000) && (uMonat <= 2)) ) { cbJahrhundertOffset = 0; } else if ( (uJahr < 2100) || ((uJahr == 2100) && (uMonat <= 2)) ) { cbJahrhundertOffset = 6; } else if ( (uJahr < 2200) || ((uJahr == 2200) && (uMonat <= 2)) ) { cbJahrhundertOffset = 4; } else if ( (uJahr < 2300) || ((uJahr == 2300) && (uMonat <= 2)) ) { cbJahrhundertOffset = 2; } else if ( (uJahr < 2400) || ((uJahr == 2400) && (uMonat <= 2)) ) { cbJahrhundertOffset = 0; } [/b] UINT uLocalJahr = uJahr; |
So wenn noch fragen sind oder wenn ich was vergessen habe. Entschuldigt bitte werde das dann schnellst möglich nachholen.
Mfg Smokee :wink:
traceurmicha - Do 09.12.10 16:10
Hallo Smokee und :welcome:,
Wo liegt denn dein Problem? Wenn du uns nicht sagst wo der Schuh drückt können wir dir auch nicht helfen.
Und, ist das ne Forms, ASP oder Consolen Anwendung?
Gruß Micha
c#surfer - Do 09.12.10 17:22
Smokee hat folgendes geschrieben : |
Hallo,
ich bin Newbie in Sachen C# und soll nun ein Kalenderblatt programmieren welches nach Eingabe des Jahres und des Monats, ein Kalenderblatt für zum Beispiel März 2018 ausgibt. Ich bin auch schon ziemlich weit nur weis ich jetzt nicht weiter. Hier der Auszug aus dem Quellcode:
[cs]short getWochentag(int uTag,int uMonat,int uJahr, int gt,int lt,int _ASSERT)
{
// ungült Jan Feb Mrz Apr Mai Jun Jul Aug Sep Okt Nov Dez
int[] arrMonatsOffset = new int[] {0, 1, 4, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5};
int cbJahrhundertOffset = 0;
_ASSERT(uTag >) 0;
_ASSERT(uTag <) 31;
_ASSERT(uMonat >) 0;
_ASSERT(uMonat <) 12;
_ASSERT(uJahr >) 1600;
//"_ASSERT" wurde ja oben mit int deklariert, VS gibt mir aber den Fehler aus das //es eine Variable sei und wie eine Methode verwendet wird
|
VS sagt genau wie es ist. _ASSERT ist eine integer Variable aber du verwendest es wie eine Methode. Was möchtest du denn mit der Zeile
_ASSERT(uTag >) 0;
erreichen?
Nebenbei: Schau dir mal die DateTime Klasse an.
Smokee - Do 09.12.10 17:34
Hallo,
Es soll eine Consolen Anwendung werden.
Die Fehler hab ich in den Quellcode mit reingeschrieben.
In Zeile 14 steht dieser beschrieben. Sry das ich es nicht schon eher dazu geschrieben habe ^^.
Mfg und einen schönen abend noch Smokee :wink:
Moderiert von
Kha: Komplettzitat entfernt
Ralf Jansen - Do 09.12.10 17:57
Zitat: |
Was möchtest du denn mit der Zeile
_ASSERT(uTag >) 0;
erreichen? |
Du solltest diese Frage beantworten. Wir haben festgestellt das das Unsinn ist genauso wie der Compiler. Aber irgendwas wirst du dir ja dabei gedacht haben .... wenn denn der Code tatsächlich so von dir stammt. Es sieht eher nach schlecht geklaut aus C++ aus.
Edit : Von
hier [
http://www.techniker-forum.de/informatik-55/tageszaehler-in-c-prgrammieren-2727.html]? Dann solltest du vielleicht nochmal einen Schritt zurück machen und dir das in C# überlegen. Sonst müsstest du erst C verstehen um es dann richtig in C# übernehmen zu können.
Smokee - Do 09.12.10 18:01
c#surfer hat folgendes geschrieben : |
VS sagt genau wie es ist. _ASSERT ist eine integer Variable aber du verwendest es wie eine Methode. Was möchtest du denn mit der Zeile
_ASSERT(uTag >) 0;
erreichen?
Nebenbei: Schau dir mal die DateTime Klasse an. |
Hi,
DataTime darf ich nicht verwenden. Wenn dann hätte ich es schon gemacht. Aber trotzdem danke für deine Hilfe.
Mfg Smokee
Moderiert von
Kha: Komplettzitat entfernt
Trashkid2000 - Do 09.12.10 21:31
Hallo,
also ich kenne das Wort "Assert" von Unit-Tests. Dort ist es eine Klasse, die prüft, ob Zustände an einem Objekt wie erwartet entsprechen. Nehme die Asserts doch einfach mal aus dem Code raus, es wird doch nie verwendet.
Dass Du Code von einer anderen Seite nimmst ist ja nicht schlimm. Aber verstehen musst Du ihn!
Und dass Du dann hier Code postest, in dem ">" als ">", "<" als "<" und ein "&&" als "&&" drin stehen, das ist schon schlimm. Und auch peinlich für die Seite, von der Du den Code hast!
Hier mal die bereinigte Version (zum besseren Verständnis):
C#-Quelltext
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: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65:
| short getWochentag(int uTag, int uMonat, int uJahr, int gt, int lt, int _ASSERT) { int[] arrMonatsOffset = new int[] {0, 1, 4, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5};
int cbJahrhundertOffset = 0; if ( uTag > 31 || uMonat > 12 || uMonat == 0 || uTag == 0 || uJahr < 1600) return -1;
if (uJahr == 1600 || uMonat < 2) return -1;
if (uJahr < 1700 || uJahr == 1700 && uMonat <= 2) { cbJahrhundertOffset = 6; } else if (uJahr < 1800 || uJahr == 1800 && uMonat <= 2) { cbJahrhundertOffset = 4; } else if (uJahr < 1900 || uJahr == 1900 && uMonat <= 2) { cbJahrhundertOffset = 2; } else if (uJahr < 2000 || uJahr == 2000 && uMonat <= 2) { cbJahrhundertOffset = 0; } else if (uJahr < 2100 || uJahr == 2100 && uMonat <= 2) { cbJahrhundertOffset = 6; } else if (uJahr < 2200 || uJahr == 2200 && uMonat <= 2) { cbJahrhundertOffset = 4; } else if (uJahr < 2300 || uJahr == 2300 && uMonat <= 2) { cbJahrhundertOffset = 2; } else if (uJahr < 2400 || uJahr == 2400 && uMonat <= 2) { cbJahrhundertOffset = 0; } int uLocalJahr = uJahr;
|
//edit musste den Code nochmal nachbessern
Marko
Trashkid2000 - Fr 10.12.10 08:02
Hmm, wenn Du mal den Link ganz oben auf der Seite, von der Du den Code vermutlich hast, angeklickt hättest, dann wärst Du auf der Seite gelandet, von der der Code mal ganz ursprünglich kam. Und dort ist er erstens richtig formatiert, besser und vor allem auch viel kürzer geschrieben.
Der Link:
http://www.a-m-i.de/tips/datetime/datetime.php
Marko
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!