Laden...

C# Kalenderblatt erzeugen

Erstellt von Smokee vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.187 Views
Thema geschlossen
S
Smokee Themenstarter:in
2 Beiträge seit 2010
vor 13 Jahren
C# Kalenderblatt erzeugen

Hallo zusammen,

ich habe ein Problem und zwar bin ich auf der Suche nach eine Ansatz um ein Kalenderblatt zu programieren. Ich schreibe einfach mal die Aufgabe hier rein und um vorzubeugen ich brauche keine fertige Lösung oder sonst was nur einen Ansatz wie man es lösen könnte.

Programmieraufgabe "Kalenderbkatt"

Schreiben Sie ein Porgramm, welches nach eingabe des Monats (und des Jahres) ein Kalenderblatt für den Monat ausgibt. Der Kalender soll von seiner Einführung bis zum Jahr 3000 gültig sein. Das Kalenderblatt soll mit Hilfe von Schleifen erstellt werden. (Bitte keine vorformatierten Ausgaben! (d.h. keine 52 Zeilen vorformatieren!!)) Fehleingaben sind abzufangen. Das Programm ist laufend wiederholbar (ohne Neustart) und kann durch einen Beendigungsbefehl verlassen werden.
Als Programmierumgebung ist das Visual Studio für C# zu verwenden.

Das wäre die Aufgabe, sie muss in C# gelöst werden. Andere Sprachen werden nicht bewertet.

Ich hoffe ihr könnt mir ein wenig helfen.

Noch ein Hinweis wir dürfen "DataTime" nicht verwenden!!!

So und hier noch mein anfänglicher Versuch ^^



static void Main(string[] args)
    {
       double jahr = 0.0;
       double monat = 0.0;
       double tag = 0.0;


       Console.WriteLine("K A L E N D E R");
       Console.Write("Bitte geben Sie das Jahr ein: ");
       jahr = Convert.ToDouble(Console.ReadLine());

       Console.Write("Bitte geben Sie den Monat ein: ");
       monat = Convert.ToDouble(Console.ReadLine());
       Console.Clear();

       Console.WriteLine("K A L E N D E R");


       Console.ReadKey();

bool istEinSchaltjahr(const UINT uJahr);
     {
              // Die Regel lautet: Alles, was durch 4 teilbar ist, ist ein Schaltjahr.
              // Es sei denn, das Jahr ist durch 100 teilbar, dann ist es keins.
              // Aber wenn es durch 400 teilbar ist, ist es doch wieder eins.

       if ((uJahr % 400) == 0)

       return uJahr = true;

       else if ((uJahr % 100) == 0)
       return uJahr= false;
       else if ((uJahr % 4) == 0)
       return uJahr = true;

       return uJahr = false;
      }

short getAnzahlTageImMonat(const UINT uMonat, const UINT uJahr)

      {
              // ungült,Jan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez
       int arrTageImMonat[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

       if (uMonat == 2)
      {
              // Februar: Schaltjahr unterscheiden
       if (Schaltjahr(uJahr))
       return uMonat = 29;
       else
       return uMonat = 28;
       }

       if ((uMonat >= 1) && (uMonat <= 12))
       return arrTageImMonat[uMonat];
       else
       {
       _ASSERT(0); // ungültiger Monat !
       return 0;
           }
       }

     }
   }
 }


Mit freundlichen Grüssen

Smokee 😉

4.221 Beiträge seit 2005
vor 13 Jahren

Bitte erst mal FAQ lesen !!

[Hinweis] Wie poste ich richtig?

z.B: verstösst Du mindestens gegen 4a,4c,5

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

H
18 Beiträge seit 2010
vor 13 Jahren

Kleiner Tipp für die Berechnung der Wochentage:
http://de.wikipedia.org/wiki/Wochentagsberechnung
Das sollte das Schwierigste an der Aufgabe sein. damit kannst Du die Wochentage ohne die DateTime-Klasse berechnen. Wenn Du konkrete Fragen zur Umsetzung hast, dann melde Dich hier in diesem Thread zurück.

Btw:
Ich selbst hatte vor 17 Jahren mal eine Wochentagsberechnung in dBase III umgesetzt, nur anhand der Berechnungsformel, die ich in unserer Stadtbücherei nachgeschlagen hatte. Internet für jedermann gab es damals noch nicht. Manchmal beneide ich die Jugend von heute 😉

// Edit: Warum hier eigentlich double?

double jahr = 0.0;
double monat = 0.0;
double tag = 0.0;

Viel Erfolg!

Gruß,
Patrick

1.820 Beiträge seit 2005
vor 13 Jahren

Hallo!

Hier mal ein möglicher Lösungsansatz:

  • Wochentage ausgeben
  • Welcher Wochentag ist der 1. des Monats und dort beginnen
  • In einer Schleife die Tage des Monats durchlaufen und ausgeben

Nobody is perfect. I'm sad, i'm not nobody 🙁

S
Smokee Themenstarter:in
2 Beiträge seit 2010
vor 13 Jahren

Super danke schön an die die mir helfen konnten und auch wollten.

an alle anderen die mich auf die faq hinweisen wollen, lasst es einfach ich kann hier keine frage stellen ohne quellcode und wenn ich mich undeutlich ausgedrückt habe dann sagt doch einfach was sache ist und ich versuche es beim nächsten mal besser zu machen.

mfg smokee

Hinweis von herbivore vor 13 Jahren

dann sagt doch einfach was sache ist

Genau das hat Programmierhans getan.

und ich versuche es beim nächsten mal besser zu machen.

Das ist sehr löblich. Auch wenn der Hinweis von Programmierhans vielleicht etwas ruppig rüberkam, ging es doch genau darum, einen Hinweis zu geben, wie du es besser machen kann. Damit wir uns das nicht jedes Mal neu die Fingern wund tippen müssen 😃 gibt es [Hinweis] Wie poste ich richtig? Wenn dich in Zukunft nochmal jemand darauf hinweist, bleib bitte gelassen und versuche genau das zu tun, was du geschrieben hast: Den Hinweis ernst nehmen und es beim nächsten Mal besser machen.

Schreibe beim nächsten Mal bitte eben nicht einfach nur die Aufgabe ab (manche Lehrer sehen es gar nicht, wenn man ihre Aufgaben ins Netz stellt, und wir sehen es wie du jetzt weiß auch nicht gerne), sondern schreibe genau, was dein Problem ist.

4.221 Beiträge seit 2005
vor 13 Jahren

an alle anderen die mich auf die faq hinweisen wollen, lasst es einfach

Werden wir sicher nicht lassen 😃

Wenn Du schon an so einfachen Sachen scheiterst, dann solltest Du Dich vielleicht ein wenig mehr anstrengen und Dir die Grundlagen selber erarbeiten... Wenn Dir die Motivation dazu fehlt, dann hinterfrage mal ob Du wirklich die richtige Ausbildung machst .

Gruss
Programmierhans

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

Thema geschlossen