C# :: Aufgabe #31
9 Lösungen

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:

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

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

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

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

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

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

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

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

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