c# Konsolenanwendung - Kalender (Wochentag bestimmen)

Unbekannt888

Reisender
Also ich habe folgendes Problem.
Zuerst sollten wir in einer Konsolenanwendung dem User Tag/Monat und Jahr eingeben lassen sollen und überprüfen ob das Datum gültig ist oder nicht.
(Schaltjahr inbegriffen)
Soweit funktioniert es auch.
Jetzt sollen wir (wenn wir möchten und es hinbekommen) noch einfügen das das Programm nach Überprüfung der Gültigkeit ausspuckt welcher Wochentag dies war. z.B.: Ob der 12.3.1967 der und der Tag war.

Also unser momentaner Programmcode:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Datumserkennung
{
class Program
{
static void Main(string[] args)
{
int iJahr, iMonat, iTag;

Console.WriteLine("Datumserkennung\n==============\nBitte geben Sie das Jahr ein!");
iJahr = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Bitte geben Sie den Tag ein!");
iTag = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Bitte geben Sie den Monat ein!");
iMonat = Convert.ToInt32(Console.ReadLine());

if (iJahr >= 0)
{
if (iMonat >= 1 && iMonat <= 12)
{
if (iTag >= 1 && iTag <= 31)
{
if (iMonat != 2 && iMonat != 4 && iMonat != 6 && iMonat != 9 && iMonat != 11)
{
Console.WriteLine("Das Datum ist gültig.");
}
else
{
if (iTag <= 30)
{
if (iMonat == 2)
{
if (iTag == 29)
{
if (iJahr % 4 == 0)
{
if (iJahr % 100 == 0)
{
if (iJahr % 400 == 0)
{
Console.WriteLine("Das Datum ist gültig.");
}
else
{
Console.WriteLine("Das Datum ist ungültig.");
}
}
else
{
Console.WriteLine("Das Datum ist gültig.");
}
}
else
{
Console.WriteLine("Das Datum ist ungültig.");
}
}
else
{
if (iTag <= 28 )
{
Console.WriteLine("Das Datum ist gültig.");
}
else
{
Console.WriteLine("Das Datum ist ungültig.");
}
}
}
else
{
Console.WriteLine("Das Datum ist gültig.");
}
}
else
{
Console.WriteLine("Das Datum ist ungültig.");
}
}
}
else
{
Console.WriteLine("Das Datum ist ungültig.");
}
}
else
{
Console.WriteLine("Das Datum ist ungültig.");
}
}
else
{
Console.WriteLine("Das Datum ist ungültig.");
}


Console.ReadLine();
}
}
}

PS.: Keine Ahnung wieso der keine Tabs und leerzeichen im Spoiler anzeigt. Garantiert weil ich es mit Microsoft Visual Studio gemacht hab :-D xD

Hoffe es kann mir sobald wie möglich einer helfen. Spätestens bis nächsten Freitag hätte ich das gerne :)
 
Spätestens bis nächsten Freitag hätte ich das gerne :)
Spätestens beim Lesen dieser Zeile dürfte den Meisten schon die Lust vergangen sein, irgendwas zu posten. Wir helfen ja gerne, aber wir kauen niemandem etwas vor und schon gar nicht halten wir Fristen ein. Hilfe hier ist freiwillig.

Natürlich heißt das nicht, dass sich niemand erbarmen darf, Hilfestellung zu geben. Ich wollte lediglich zum Ausdruck bringen, was mir gerade durch den Kopf dazu ging.

Zum Thema; sorry, ich kann da nicht helfen. Ich hab mich mal mit C++ beschäftigt, aber das ist inzwischen so lange her, dass ich schon vergessen hab, wie ein einfaches Hello World geht ;) und mit C# hatte ich noch nie zu tun...
 
Wenn ihr den richtigen Datentyp (DateTime) verwendet, ist es deutlich einfacher :)

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string sJahr, sMonat, sTag, sDate;
            DateTime datum;

            Console.WriteLine("Datumserkennung\n============== \nBitte geben Sie das Jahr ein!");
            sJahr = Console.ReadLine();

            Console.WriteLine("Bitte geben Sie den Monat ein!");
            sMonat = Console.ReadLine();

            Console.WriteLine("Bitte geben Sie den Tag ein!");
            sTag = Console.ReadLine();

            try
            {
                // Datum zusammenbasteln
                sDate = sTag + "." + sMonat + "." + sJahr;
                // und prüfen. Schlägt die Prüfung fehl, wird automatisch der catch-Block aufgerufen.
                datum = DateTime.Parse(sDate);
                Console.WriteLine("Das Datum ist gültig.");

                // Das ist nur notwendig, da die Ausgabe von DayOfWeek englisch ist
                switch (datum.DayOfWeek)
                {
                    case DayOfWeek.Friday:
                        Console.WriteLine("Der Wochentag ist: Freitag");
                        break;
                    case DayOfWeek.Monday:
                        Console.WriteLine("Der Wochentag ist: Montag");
                        break;
                    case DayOfWeek.Saturday:
                        Console.WriteLine("Der Wochentag ist: Samstag");
                        break;
                    case DayOfWeek.Sunday:
                        Console.WriteLine("Der Wochentag ist: Sonntag");
                        break;
                    case DayOfWeek.Thursday:
                        Console.WriteLine("Der Wochentag ist: Donnerstag");
                        break;
                    case DayOfWeek.Tuesday:
                        Console.WriteLine("Der Wochentag ist: Dienstag");
                        break;
                    case DayOfWeek.Wednesday:
                        Console.WriteLine("Der Wochentag ist: Mittwoch");
                        break;
                }
            }
            catch
            {
                Console.WriteLine("Das Datum ist ungültig.");
            }

            Console.ReadLine();
        }
    }
}

Simpel, oder :D
 
@wegen der zeit frist meinte ich das es ab nächsten freitag nichtmehr nötig wäre eine antwort zu posten da ich es da dann eh in der schule aufgelöst bekäme. Hatte nur nicht sehr viel Zeit iwie großartig meine formulierung zu ändern - sorry^^

""DateTime"" datum;
<--- Wofür ist das? o.o
 
""DateTime"" datum;
<--- Wofür ist das? o.o

DateTime ist ein sogenannter komplexer Datentyp im .NET-Framework.

DateTime datum ist die Variablendeklaration.

Weiter unten im Code findest Du:

datum = DateTime.Parse(sDate);

Enthält sDate ein gültiges Datum, wird es der Variablen datum zugewiesen, ansosten wird eine Exception ausgelöst. Diese fängt der catch-Block ab. So wird die Prüfung auf ein gültiges Datum recht einfach.