C# :: Aufgabe #300

4 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von blackliner (340 Punkte) - 15.04.2020 um 12:51 Uhr
Quellcode ausblenden C#-Code
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;
        }
    }
}
vote_ok
von soma (150 Punkte) - 19.04.2020 um 21:54 Uhr
Das ganze besticht nicht durch Eleganz, aber es funktioniert.

Quellcode ausblenden 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());
            }
        }
    }
}
vote_ok
von soma (150 Punkte) - 20.04.2020 um 21:02 Uhr
Quellcode ausblenden 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());
            }
        }
    }
}
vote_ok
von JKooP (18090 Punkte) - 13.11.2020 um 16:27 Uhr
NET 5.x; C# 9.x
Top-Level-Programm: ohne "namespace" und "class Program"
Quellcode ausblenden C#-Code
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));
}