C# :: Aufgabe #179 :: Lösung #6

7 Lösungen Lösungen öffentlich
#179

Ist Freitag der 13. ein Unglücks- oder Glückstag?

Anfänger - C# von hollst - 26.06.2017 um 13:14 Uhr
Wir betrachten den Gregorianischen Kalender mit den üblichen 12 Monaten und Schaltjahren.

Schaltjahr ist, wenn die Jahreszahl durch 4 teilbar ist, mit Ausnahme der Jahre, die durch 100,
jedoch nicht durch 400 teilbar sind. Im Schaltjahr hat der Februar 29 Tage.

Unsere Zeitrechnung beginne mit dem 1. Januar 00.

Frage: Welcher Wochentag fällt

a) am häufigsten auf einen 13. des Monats und
b) welcher bzw. welche am wenigsten.
#6
vote_ok
von Layn (100 Punkte) - 20.09.2018 um 08:18 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace der13
{
    class Program
    {
        static int[] weekDayCounter = new int[7];
        static int counter;
        static string weekdayMax;
        static string weekdayMin;
        static int day;
        static int daysave;
        static float i = 1;
        static float numbersave;
        static bool switchYear;

         static void Main(string[] args)
              {
                  Render();
            Console.WriteLine(Convert.ToString(weekDayCounter.Max()));
            if (weekDayCounter.ToList().IndexOf(weekDayCounter.Max()) == 0) { weekdayMax = "Monday"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Max()) == 1) { weekdayMax = "Tuesday"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Max()) == 2) { weekdayMax = "Wednesday"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Max()) == 3) { weekdayMax = "Thursday"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Max()) == 4) { weekdayMax = "Friday"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Max()) == 5) { weekdayMax = "Saturday 	"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Max()) == 6) { weekdayMax = "Sunday 	"; }
            Console.WriteLine("The day with the most 13th. is the {0}.", weekdayMax);
            if (weekDayCounter.ToList().IndexOf(weekDayCounter.Min()) == 0) { weekdayMin = "Monday"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Min()) == 1) { weekdayMin = "Tuesday"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Min()) == 2) { weekdayMin = "Wednesday"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Min()) == 3) { weekdayMin = "Thursday"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Min()) == 4) { weekdayMin = "Friday"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Min()) == 5) { weekdayMin = "Saturday 	"; }
            else if (weekDayCounter.ToList().IndexOf(weekDayCounter.Min()) == 6) { weekdayMin = "Sunday 	"; }
            Console.WriteLine("The day with the less 13th. is the {0}.", weekdayMin);
            Console.ReadKey();

        }

         private static void Render()
         {
             for (i = 1; i <= 2018; i++)
             {
                 Schaltjahr();
                 if (i <= 2018 & switchYear == true)
                 {
                     Tag31();
                     Tag29();
                     Tag31();
                     Tag30();
                     Tag31();
                     Tag30();
                     Tag31();
                     Tag31();
                     Tag30();
                     Tag31();
                     Tag30();
                     Tag31();
                 }
                 if (i <= 2018 & switchYear == false)
                 {
                     Tag31();
                     Tag28();
                     Tag31();
                     Tag30();
                     Tag31();
                     Tag30();
                     Tag31();
                     Tag31();
                     Tag30();
                     Tag31();
                     Tag30();
                     Tag31();
                 }
             }
         }

         private static void Schaltjahr()
         {
             switchYear = true;
             numbersave = i / 100;
             if (numbersave == (int)numbersave)
             {
                 switchYear = false;
             }

                 numbersave = i / 400;
                 if (numbersave == (int)numbersave)
                 {
                     switchYear = true;
                     numbersave = i / 4;
                     if (numbersave != (int)numbersave & switchYear != false)
                     {
                         switchYear = false;
                     }
                     else
                     {
                         switchYear = true;
                     }
                 }
             
         }
         private static void Tag28()
         {
             while (day <= 7) 
             {
                 Provider();
                 if (counter == 28) { counter = 0; break; }
             }
         }

         private static void Tag29()
         {
             while (day <= 7)
             {
                 Provider();
                 if (counter == 29) { counter = 0; break; }
             }
         }

         private static void Tag31()
         {
             while(day <= 7) 
             {
                 Provider();
                 if (counter == 31) { counter = 0; break; }
             }
         }
         private static void Tag30()
         {
             while (day <= 7) 
             {
                 Provider();
                 if (counter == 30) { counter = 0; break; }
             }
         }

         private static void Tagsaver()
         {
             if (daysave == 1) { weekDayCounter[0]++; }
             if (daysave == 2) { weekDayCounter[1]++; }
             if (daysave == 3) { weekDayCounter[2]++; }
             if (daysave == 4) { weekDayCounter[3]++; }
             if (daysave == 5) { weekDayCounter[4]++; }
             if (daysave == 6) { weekDayCounter[5]++; }
             if (daysave == 7) { weekDayCounter[6]++; }

         }

         private static void Provider()
         {
             counter++;
             day++;
             if (counter == 13) { daysave = day; Tagsaver(); }
             if (day == 7) { day = 0; }
         }
      
    }
}

Kommentare:

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

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