C# :: Aufgabe #31

9 Lösungen Lösungen öffentlich

Anzahl Freitag, der 13te über bestimmten Zeitraum

Anfänger - C# von pocki - 29.12.2012 um 19:56 Uhr
Schreibe ein Programm welches 2 verschiedene Datum einliest und berechne die Anzahl wie oft in diesem Zeitraum der 13te eines Monats auf einen Freitag fiel und gib diese aus.

Konsolenausgabe:


Startdatum: 01.01.2009
Enddatum: 31.12.2009
13.02.2009
13.03.2009
13.11.2009
Summe: 3

Lösungen:

vote_ok
von pocki (4190 Punkte) - 07.01.2013 um 18:09 Uhr
Quellcode ausblenden C#-Code
void main()
{
	Console.Write("Startdatum: ");
	string inputStart = Console.ReadLine();
	Console.Write("Enddatum: ");
	string inputEnde = Console.ReadLine();
	
	DateTime dtStart = DateTime.Parse(inputStart);
	DateTime dtEnde  = DateTime.Parse(inputEnde);
	
	int summe = 0;
	while (dtStart < dtEnde)
	{
		if (dtStart.Day == 13)
		{
			if (dtStart.DayOfWeek == DayOfWeek.Friday)
			{
				Console.WriteLine(dtStart.ToShortDateString());
				summe++;
			}
			dtStart = dtStart.AddMonths(1);			
		}
		else
		{
			dtStart =	dtStart.AddDays(1);
		}
	}
	
	Console.WriteLine("Summe: {0}", summe);
}
vote_ok
von Mexx (2370 Punkte) - 13.05.2014 um 22:04 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FreitagDer13Ermitteln
{
    class Program
    {
        static void Main(string[] args)
        {
            bool result1 = false, result2 = false;
            DateTime date1, date2;
            do
            {
                Console.WriteLine("Geben Sie das Startdatum an");
                if (!(DateTime.TryParse(Console.ReadLine(), out date1)))
                {

                }
                else
                {
                    result1 = true;
                }
                Console.WriteLine("Geben Sie das Enddatum an");
                if (!(DateTime.TryParse(Console.ReadLine(), out date2)))
                {
                    Console.WriteLine("Eines der Eingegebenen Daten war nicht korrekt, versuchen Sie es erneut");
                    Console.WriteLine("");
                }
                else
                {
                    result2 = true;
                }
            } while (!(result1 && result2));

            int count = 0;
            while (date1 <= date2)
            {
                if (date1.DayOfWeek.ToString() == "Friday" && date1.Day == 13)
                {
                    Console.WriteLine(date1.Date.ToShortDateString());
                    count++;
                }
                date1 = date1.AddDays(1);
            }
            Console.WriteLine("Summe {0}", count);
            Console.ReadKey();
        }
    }
}
vote_ok
von wladi-g (1310 Punkte) - 03.06.2014 um 11:39 Uhr
Quellcode ausblenden C#-Code
using System;

namespace FreitagDer13
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime startdatum = new DateTime();
            DateTime enddatum = new DateTime();
            int summe = 0;

            do
            {
                Console.Write("Startdatum: ");
            }
            while (!DateTime.TryParse(Console.ReadLine(), out startdatum));
            do
            {
                Console.Write("Enddatum: ");
            }
            while (!DateTime.TryParse(Console.ReadLine(), out enddatum) || enddatum < startdatum);

            while (startdatum <= enddatum)
            {
                if (startdatum.Day == 13 && startdatum.DayOfWeek.ToString().Equals("Friday"))
                {
                    Console.WriteLine(startdatum.ToShortDateString());
                    summe++;
                }
                startdatum = startdatum.AddDays(1.0);
            }

            Console.WriteLine("Summe: {0}", summe);
        }
    }
}
vote_ok
von Mentalist999 (680 Punkte) - 09.03.2015 um 01:15 Uhr
Quellcode ausblenden C#-Code
        public List<DateTime> Friday13(DateTime From, DateTime To)
        {
            List<DateTime> Result = new List<DateTime>();
 
            do {
                if (From.Day == 13 & From.DayOfWeek == DayOfWeek.Friday) Result.Add(From); }
 
            while (From.AddDays(1) <= To);
         
            return Result;
        }
vote_ok
von DBqFetti (2480 Punkte) - 30.06.2015 um 20:59 Uhr
Quellcode ausblenden C#-Code
using System;

namespace Freitag13 {
	class Program {
		static void Main() {
			DateTime
				start = default(DateTime),
				end = default(DateTime);
			int counter;

			while (start == default(DateTime) || end == default(DateTime) || start.CompareTo(end) > 0) {
				try {
					Console.Clear();
					Console.Write("Start-Datum>");
					start = Convert.ToDateTime(Console.ReadLine());
					Console.Write("End-Datum>");
					end = Convert.ToDateTime(Console.ReadLine());
				}
				catch (Exception) {
					start = default(DateTime);
					end = default(DateTime);
				}
			}

			for (start = GotoNext(13, start), counter = 0; start.CompareTo(end) <= 0; start = start.AddMonths(1)) {
				if (start.DayOfWeek == DayOfWeek.Friday) {
					Console.WriteLine(start.ToShortDateString());
					counter++;
				}
			}
			Console.WriteLine("Summe: " + counter);

			Console.ReadKey(true);
		}

		static DateTime GotoNext(int DayInMonth, DateTime AfterOrAt) {
			if (DayInMonth < 0 || DayInMonth > 31 || AfterOrAt.Day == DayInMonth)
				return AfterOrAt;
			else
				return
					AfterOrAt
					.AddDays(DayInMonth - AfterOrAt.Day)
					.AddMonths(AfterOrAt.Day > DayInMonth ? 1 : 0);
		}
	}
}

vote_ok
von n.rohde (400 Punkte) - 26.08.2015 um 11:15 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AnzahlFreitag13
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime datumStart, datumEnde;
            int summe = 0;

            Console.Write("Startdatum:\t");
            datumStart = Convert.ToDateTime(Console.ReadLine());
            Console.Write("Enddatum:\t");
            datumEnde = Convert.ToDateTime(Console.ReadLine());

            while (datumStart <= datumEnde)
            {
                if (Convert.ToString(datumStart.DayOfWeek) == "Friday" && datumStart.Day == 13)
                {
                    Console.WriteLine(Convert.ToString(datumStart.Date.ToString("d")));
                    summe++;
                }
                datumStart = datumStart.AddDays(1);
            }

            Console.WriteLine("Summe: " + Convert.ToString(summe));
            Console.Read();
        }
    }
}
vote_ok
von stbehl (1640 Punkte) - 05.02.2018 um 11:37 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TrainYourProgrammer31
{
    class Program
    {
        static void Main(string[] args)
        {
            int summe=0;
            Console.Write("Startdatum: ");
            string startdatum = Console.ReadLine();
            string[] datenStart = startdatum.Split('.');
            Console.Write("Enddatum: ");
            string enddatum = Console.ReadLine();
            string[] datenEnde = enddatum.Split('.');
            while (Convert.ToInt32(datenStart[2]) <= Convert.ToInt32(datenEnde[2]))
            {
                datenStart[0] = "13";
                while (Convert.ToInt32(datenStart[1]) <= 12)
                {
                    DateTime pruefe = new DateTime(Convert.ToInt32(datenStart[2]), Convert.ToInt32(datenStart[1]), Convert.ToInt32(datenStart[0]));
                    string wochentagpruefung = Convert.ToString(pruefe.DayOfWeek);
                    if (wochentagpruefung == "Friday")
                    {
                        Console.WriteLine(datenStart[0] + "." + datenStart[1] + "." + datenStart[2]);
                        summe++;
                    }
                    datenStart[1] = Convert.ToString(Convert.ToInt32(datenStart[1]) + 1);
                }
                datenStart[2] = Convert.ToString(Convert.ToInt32(datenStart[2]) + 1);
            }
            Console.WriteLine("Summe: " + summe);
            Console.ReadKey();
        }
    }
}
vote_ok
von stcalvin (970 Punkte) - 05.02.2018 um 14:38 Uhr
Quellcode ausblenden C#-Code
        static void Aufgabe_31()
        {
            DateTime start, ende;
            int counter = 0;

            Console.Write("Startdatum: ");
            start = Convert.ToDateTime(Console.ReadLine());
            Console.Write("Enddatum: ");
            ende = Convert.ToDateTime(Console.ReadLine());

            while (start != ende)
            {
                if (start.DayOfWeek == DayOfWeek.Friday && start.Day == 13)
                {
                    counter++;
                    Console.WriteLine(start.Date.ToString("dd.MM.yyyy"));
                }
                start = start.AddDays(1);
            }

            Console.WriteLine("Summe: {0}", counter);
        }
vote_ok
von Chrille (100 Punkte) - 29.10.2020 um 12:19 Uhr
Quellcode ausblenden C#-Code
        static void Main(string[] args)
        {
            //eingabe Anfangsdatum
            DateTime anfangsDatum;
            Console.Write("Startdatum: ");
            while (!DateTime.TryParse(Console.ReadLine(), out anfangsDatum))
            {
                Console.WriteLine("Fehlerhafte Eingabe, eingabe wiederholen");
                Console.Write("Startdatum: ");
            }
            
            //eingabe Enddatum
            DateTime endDatum;
            Console.Write("Enddatum: ");
            while (!(DateTime.TryParse(Console.ReadLine(), out endDatum) && endDatum > anfangsDatum))
            {
                Console.WriteLine("Fehlerhafte Eingabe, eingabe wiederholen");
                Console.Write("Enddatum: ");
            }

            //Setzten des Tages auf den 13. ggf im nächsten Monat.
            if (anfangsDatum.Day <=13)
            {
                anfangsDatum.AddDays(13-anfangsDatum.Day);
            }
            else
            {
                anfangsDatum = new DateTime(anfangsDatum.Year, anfangsDatum.Month, 13).AddMonths(1);
            }

            // Schleifendurchlauf mit Zählfunktion der übereinstimmung.
            int fridaysOfNoFuture = 0;
            for (DateTime i = anfangsDatum; i<endDatum; i=i.AddMonths(1)) // überprüft immer nur den 13. jeden Monats
            {
                if (i.DayOfWeek== DayOfWeek.Friday)
                {
                    fridaysOfNoFuture++;
                    Console.WriteLine("{0:dd/MM/yyyy}", i.Date);
                }
            }
            Console.WriteLine("Summe: "+fridaysOfNoFuture);
            Console.ReadKey();
        }
2118744

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.