Autor |
Beitrag |
Smokee
Hält's aus hier
Beiträge: 3
|
Verfasst: Do 09.12.10 15:51
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:
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 
Zuletzt bearbeitet von Smokee am Do 09.12.10 17:33, insgesamt 2-mal bearbeitet
|
|
traceurmicha
      
Beiträge: 160
Erhaltene Danke: 9
Win XP SP2, Win 7 Pro., Ubuntu 9, Debian 5
C#, ASP.NET, MSSQL, PHP(Microsoft Visual Studio 2010 Ultimate, SharpDevelop 4, Microsoft SQL Server2008 Express, Eclipse for PHP)
|
Verfasst: Do 09.12.10 16:10
Hallo Smokee und  ,
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
_________________ Programmieren ist ein Rennen zwischen den Softwareentwicklern, die versuchen größere und bessere idiotensichere Programme zu schreiben und dem Universum, welches versucht größere und bessere Idioten zu produzieren. Zur Zeit liegt das Universum in Führung.
Für diesen Beitrag haben gedankt: Smokee
|
|
c#surfer
      
Beiträge: 42
Erhaltene Danke: 2
|
Verfasst: 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 
Hält's aus hier
Beiträge: 3
|
Verfasst: 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
Moderiert von Kha: Komplettzitat entfernt
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: 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? 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.
Für diesen Beitrag haben gedankt: Kha
|
|
Smokee 
Hält's aus hier
Beiträge: 3
|
Verfasst: 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
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: 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):
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
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: 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: www.a-m-i.de/tips/datetime/datetime.php
Marko
|
|
|