C# :: Aufgabe #41 :: Lösung #8

14 Lösungen Lösungen öffentlich
#41

Schaltjahresberechnung

Anfänger - C# von Process1 - 10.01.2013 um 06:52 Uhr
Es soll eine jahreszahl übergeben werden und es soll überprüft werden ob es sich um ein Schaltjahr handelt oder nicht.

Es gilt:
- Wenn ein Jahr durch 4 teilbar ist, ist es ein Schaltjahr, aber
- wenn es durch 100 teilbar ist, ist es kein schaltjahr, außer
- es ist durch 400 teilbar, dann ist es ein schaltjahr

z.b. 1664, 1600, 2000, 2004 sind schaltjahre
1003, 2006, 1700 sind keine schaltjahre
#8
1x
vote_ok
von s1bl3x (50 Punkte) - 19.11.2015 um 20:27 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Schaltjahr
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialwerte
            uint year = 0;
            string eingabe = string.Empty;
            char auswahl = ' ';
            bool fehler = false;

            // Consolenfarbe & Initialisierung
            Console.ForegroundColor = ConsoleColor.Black;
            Console.BackgroundColor = ConsoleColor.White;
            Console.Clear();

            // Schleife über gesamtes Programm
            do
            {
                Console.Clear();

                // Menü Ausgabe über Methode
                Menu();
                // Auswahl über Methode
                auswahl = EingabeMenu("Auswahl: ");

                // logische Abfragen für Menüauswahl
                if (auswahl == '9')
                {
                    // Ausstieg und Beenden des Programmes
                    break;
                }
                else if (auswahl == '1')
                // Bei Auswahl '1' löschen der Console
                // und weiter mit Auswahl für Berechnung eines bestimmten Jahres
                {
                    Console.Clear();
                    
                    // Schleife für Fehlerprüfung
                    do
                    {

                        fehler = false;
                        try
                        {
                            Console.Clear();
                            Console.WriteLine("Ausgabe für Einzelnes Jahr");
                            Console.WriteLine("----------------------------------");
                            Console.Write("Bitte Jahr eingeben: ");
                            year = Convert.ToUInt32(Console.ReadLine());
                            
                            if (year < 10000)
                            {
                                fehler = false;
                            }
                            else
                            {
                                Console.WriteLine("Maximal 4 Stellige Jahreszahlen zulässig!");
                                Console.ReadKey();
                                fehler = true;
                            }
                        }
                        catch
                        {
                            Console.WriteLine("Jahreszahlen von 1 - 9999 zulässig!");
                            Console.ReadKey();
                            fehler = true;
                        }

                    } while (fehler);

                    // logische Abfragen für Schaltjahr Berechnung
                    if (year % 4 == 0 && (year % 400 == 0 || year % 100 != 0))
                    {
                        Console.WriteLine("{0} ist ein Schaltjahr", year);
                        Console.WriteLine("----------------------------------");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("{0} ist kein Schaltjahr", year);
                        Console.WriteLine("----------------------------------");
                        Console.ReadKey();
                    }
                }
                else if (auswahl == '2')
                // Bei Auswahl '2' löschen der Console
                // und weiter mit Ausgabe der Jahre 2015 - 2025
                {
                    Console.Clear();
                    Console.WriteLine("Schaltjahr Ausgabe 2015 - 2025");
                    Console.WriteLine("----------------------------------");
                    for (int i = 2015; i <= 2025; i++)
                    {
                        if (DateTime.IsLeapYear(i))
                            Console.WriteLine("Das Jahr {0} ist ein Schaltjahr", i);
                        else
                            Console.WriteLine("Das Jahr {0} ist kein Schaltjahr", i);
                    }
                    Console.WriteLine("----------------------------------");
                    Console.ReadKey();
                }

                // zurücksetzen des Wertes "year" für neue Aufgabe
                year = 0;

                // Abfrage "Nochmal?" über Methode
                eingabe = AbfrageNochmal("zum Hauptmenü? (n = Beenden) j/n: ");

                //Ende Schleife über Programm
            } while (eingabe.ToLower() == "j");

        }

        static string AbfrageNochmal(string text)
        {
            string value = string.Empty;

            do
            {
                Console.Write(text);
                value = Console.ReadLine();
            } while (value.ToLower() != "j" && value.ToLower() != "n");

            return value;
        }

        static void Menu()
        {
            Console.WriteLine("Schaltjahr Ausgabe");
            Console.WriteLine("----------------------------------");
            Console.WriteLine("1. Nur 1 Jahr abfragen");
            Console.WriteLine("2. Von 2015 bis 2025");
            Console.WriteLine();
            Console.WriteLine("9. Beenden");
            Console.WriteLine("----------------------------------");
        }

        static Char EingabeMenu(string text)
         {
            bool fehler = false;
            char value = ' ';

            do
            {
                try
                {
                    fehler = false;
                    Console.Write(text);
                    value = Convert.ToChar(Console.ReadLine());

                    if (value != '1' && value != '2' && value != '9')
                        throw new Exception("Nur Auswahl 1,2 & 9 erlaubt!");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    fehler = true;
                }
            } while (fehler);

            return value;
        }
        
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben