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)); }