C# :: Aufgabe #300
4 Lösungen
Welcher Tag ist morgen?
Anfänger - C#
von DragStar
- 06.04.2020 um 08:30 Uhr
Verfassen Sie ein Programm, welches nach Eingabe von Tag, Monat und Jahr das Datum des nächsten Tages ausgibt.
Es sollen Monats- und Jahreswechsel, sowie Schaltjahre berücksichtigt werden.
Es sollen Monats- und Jahreswechsel, sowie Schaltjahre berücksichtigt werden.
Lösungen:
using System;
namespace morgiges_Datum
{
class Program
{
static void Main()
{
while (true)
{
DateTime morgen = ParseDate().AddDays(1);
Console.WriteLine(morgen.Date.ToShortDateString());
Console.ReadLine();
}
}
private static DateTime ParseDate()
{
bool valid = false;
DateTime date = DateTime.MinValue;
while (!valid)
{
Console.WriteLine("Geben Sie das Datum im Format 'TT.MM.JJJJ' an:");
try
{
valid = DateTime.TryParse(Console.ReadLine(), out date);
if (!valid) { throw new Exception(); }
}
catch (Exception) { Console.WriteLine("Eingabe ungültig"); continue; }
}
return date;
}
}
}
Das ganze besticht nicht durch Eleganz, aber es funktioniert.
C#-Code
using System;
namespace Naechster_Tag
{
class Program
{
static void Main(string[] args)
{
int tag, monat, jahr, weiter;
weiter = 1;
while (weiter == 1)
{
//Abfrage Jahr
Console.WriteLine("Bitte das Jahr eingeben:");
jahr = int.Parse(Console.ReadLine());
//Abfrage Monat
Console.WriteLine("Bitte den Monat eingeben (1 - 12):");
monat = int.Parse(Console.ReadLine());
//Abfrage Tag Februar Schaltjahr
if (monat == 2 && (jahr % 4 == 0))
{
Console.WriteLine("Bitte den Tag eingeben (1 - 29):");
tag = int.Parse(Console.ReadLine());
}
//Abfrage Tag Februar normales Jahr
else if (monat == 2 && (jahr % 4 != 0))
{
Console.WriteLine("Bitte den Tag eingeben (1 - 28):");
tag = int.Parse(Console.ReadLine());
}
//Abfrage Tag April, Juni, September, November
else if (monat == 4 || monat == 6 || monat == 9 || monat == 11)
{
Console.WriteLine("Bitte den Tag eingeben (1 - 30):");
tag = int.Parse(Console.ReadLine());
}
//Abfrage Tag Januar, März, Mai, Juli, August, Oktober, Dezember
else
{
Console.WriteLine("Bitte den Tag eingeben (1 - 31):");
tag = int.Parse(Console.ReadLine());
}
//Ausgabe gewähltes Datum
Console.WriteLine("Das gewählte Datum lautet: " + tag + "." + monat + "." + jahr + ".");
//Ausgabe Folgedatum
//Nicht existente Monate und Tage
if ((monat < 1) || (monat > 12) || (tag < 1) || (tag > 31))
{
Console.WriteLine("Haha! Schlaumeier!");
}
//28. Februar in Schaltjahr
else if ((tag + 1 == 29) && (monat == 2) && (jahr % 4 == 0))
{
Console.WriteLine("Das Datum des nächsten Tages lautet " + (tag + 1) + "." + monat + "." + jahr + ".");
}
//29. Februar in Schaltjahr
else if ((tag + 1 == 30) && (monat == 2) && (jahr % 4 == 0))
{
Console.WriteLine("Das Datum des nächsten Tages lautet 1.3." + jahr + ".");
}
//28. Februar in normalem Jahr
else if ((tag + 1 == 29) && (monat == 2))
{
Console.WriteLine("Das Datum des nächsten Tages lautet 1.3." + jahr + ".");
}
//Nicht existente Daten Februar
else if ((tag >= 29) && (monat == 2))
{
Console.WriteLine("Haha! Schlaumeier!");
}
//30. April, Juni, September, November
else if ((tag + 1 == 31) && (monat == 4 || monat == 6 || monat == 9 || monat == 11))
{
Console.WriteLine("Das Datum des nächsten Tages lautet 1." + (monat + 1) + "." + (jahr) + ".");
}
//Nicht existente Daten in April, Juni, September, November
else if ((tag > 30) && (monat == 4 || monat == 6 || monat == 9 || monat == 11))
{
Console.WriteLine("Haha! Schlaumeier!");
}
//31. Januar, März, Mai, Juli, August, Oktober
else if ((tag + 1 == 32) && (monat != 12))
{
Console.WriteLine("Das Datum des nächsten Tages lautet 1." + (monat + 1) + "." + (jahr) + ".");
}
//31. Dezember
else if ((tag + 1 == 32) && (monat ==12))
{
Console.WriteLine("Das Datum des nächsten Tages lautet 1.1." + (jahr + 1));
}
//Sonstige Daten
else
{
Console.WriteLine("Das Datum des nächsten Tages lautet " + (tag + 1) + "." + monat + "." + jahr + ".");
}
Console.WriteLine("1 für weiter, 0 zum Beenden.");
weiter = int.Parse(Console.ReadLine());
}
}
}
}using System;
namespace Naechster_Tag
{
class Program
{
static void Main(string[] args)
{
int tag, monat, jahr, weiter;
weiter = 1;
while (weiter == 1)
{
//Abfrage Jahr
Console.WriteLine("Bitte das Jahr eingeben:");
jahr = int.Parse(Console.ReadLine());
//Abfrage Monat
Console.WriteLine("Bitte den Monat eingeben (1 - 12):");
monat = int.Parse(Console.ReadLine());
//Abfrage Tag Februar Schaltjahr
if (monat == 2 && (jahr % 4 == 0))
{
Console.WriteLine("Bitte den Tag eingeben (1 - 29):");
tag = int.Parse(Console.ReadLine());
}
//Abfrage Tag Februar normales Jahr
else if (monat == 2 && (jahr % 4 != 0))
{
Console.WriteLine("Bitte den Tag eingeben (1 - 28):");
tag = int.Parse(Console.ReadLine());
}
//Abfrage Tag April, Juni, September, November
else if (monat == 4 || monat == 6 || monat == 9 || monat == 11)
{
Console.WriteLine("Bitte den Tag eingeben (1 - 30):");
tag = int.Parse(Console.ReadLine());
}
//Abfrage Tag Januar, März, Mai, Juli, August, Oktober, Dezember
else
{
Console.WriteLine("Bitte den Tag eingeben (1 - 31):");
tag = int.Parse(Console.ReadLine());
}
//Ausgabe gewähltes Datum
Console.WriteLine("Das gewählte Datum lautet: " + tag + "." + monat + "." + jahr + ".");
//Ausgabe Folgedatum
//Nicht existente Monate und Tage
if ((monat < 1) || (monat > 12) || (tag < 1) || (tag > 31))
{
Console.WriteLine("Haha! Schlaumeier!");
}
//28. Februar in Schaltjahr
else if ((tag + 1 == 29) && (monat == 2) && (jahr % 4 == 0))
{
Console.WriteLine("Das Datum des nächsten Tages lautet " + (tag + 1) + "." + monat + "." + jahr + ".");
}
//29. Februar in Schaltjahr
else if ((tag + 1 == 30) && (monat == 2) && (jahr % 4 == 0))
{
Console.WriteLine("Das Datum des nächsten Tages lautet 1.3." + jahr + ".");
}
//28. Februar in normalem Jahr
else if ((tag + 1 == 29) && (monat == 2))
{
Console.WriteLine("Das Datum des nächsten Tages lautet 1.3." + jahr + ".");
}
//Nicht existente Daten Februar
else if ((tag >= 29) && (monat == 2))
{
Console.WriteLine("Haha! Schlaumeier!");
}
//30. April, Juni, September, November
else if ((tag + 1 == 31) && (monat == 4 || monat == 6 || monat == 9 || monat == 11))
{
Console.WriteLine("Das Datum des nächsten Tages lautet 1." + (monat + 1) + "." + (jahr) + ".");
}
//Nicht existente Daten in April, Juni, September, November
else if ((tag > 30) && (monat == 4 || monat == 6 || monat == 9 || monat == 11))
{
Console.WriteLine("Haha! Schlaumeier!");
}
//31. Januar, März, Mai, Juli, August, Oktober
else if ((tag + 1 == 32) && (monat != 12))
{
Console.WriteLine("Das Datum des nächsten Tages lautet 1." + (monat + 1) + "." + (jahr) + ".");
}
//31. Dezember
else if ((tag + 1 == 32) && (monat ==12))
{
Console.WriteLine("Das Datum des nächsten Tages lautet 1.1." + (jahr + 1));
}
//Sonstige Daten
else
{
Console.WriteLine("Das Datum des nächsten Tages lautet " + (tag + 1) + "." + monat + "." + jahr + ".");
}
Console.WriteLine("1 für weiter, 0 zum Beenden.");
weiter = int.Parse(Console.ReadLine());
}
}
}
}
NET 5.x; C# 9.x
Top-Level-Programm: ohne "namespace" und "class Program"
C#-Code
Top-Level-Programm: ohne "namespace" und "class Program"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
// Mögliche Eingaben durch Benutzer -> Hier vereinfacht durch Liste dargestellt:
var lst = new List<string>()
{
"9.1.20", // 09.01.2020
"18718", // 17.07.2018
"12/12/17", // 12.12.2017
"4-4-66", // 04.04.1966
"1111", // 01.01.2011
"29219" // 01.01.2011 -> Fehler 01.01.0001
};
// Ausgabe
lst.Select(x => GetDates(x)).ToList().ForEach(x => Console.WriteLine($"Heute: {x.today.ToShortDateString()} -> Morgen: {x.tomorrow.ToShortDateString()}"));
// String -> Datum
static (DateTime today, DateTime tomorrow) GetDates(string s)
{
var r = new Regex(@"(\d{1,2})\W*(\d{1,2})\W*(\d{2,4})").Match(s);
_ = DateTime.TryParse($"{r.Groups[1]}.{r.Groups[2]}.{r.Groups[3]}", out var d);
return (d, d.AddDays(1));
}
