C# :: Aufgabe #53

7 Lösungen Lösungen öffentlich

Bei Addition von Tage nur Werktage beachten

Anfänger - C# von Gustl - 22.07.2013 um 11:04 Uhr
Schreibe ein Programm welches die Anzahl der addierenden Tage abfrägt und dann das Datum ausgibt.
Bei der Addition der Tage sollen aber nur die Werktage (Geschäftstage): Montag, Dienstag, Mittwoch, Donnerstag und Freitag beachtet werden.

Beispiel: Heute ist der 22.07. (Montag), wenn ich nun 7 Tage eingebe soll der 31.07. (Mittwoch) ausgegeben werden.

Lösungen:

vote_ok
von pocki (4190 Punkte) - 22.07.2013 um 20:52 Uhr
Eine einfache Lösung
Quellcode ausblenden C#-Code
void Main()
{
	// Anzahl der Geschäftstage einlesen
	int workdays = 0;
	string input = string.Empty;
	do
	{
		System.Console.WriteLine("Anzahl der Werktage ab heute: ");
		input = Console.ReadLine();		
	} while (!int.TryParse(input, out workdays));
	
	// Einzeln jeden Tag weiterzählen und zusätzlich Wochenenden überspringen
	DateTime endday = DateTime.Today;
	for (int i = 0; i < workdays; i++)
	{
		endday = endday.AddDays(1);
		while (endday.DayOfWeek == DayOfWeek.Sunday || endday.DayOfWeek == DayOfWeek.Saturday)
		{
			endday = endday.AddDays(1);
		}
	}
	System.Console.WriteLine("Enddatum ist der " + endday.ToLongDateString());
}
vote_ok
von Mexx (2370 Punkte) - 31.05.2014 um 11:40 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AddDays
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime dteingabe = DateTime.Now;
            Console.WriteLine("Geben Sie die Anzahl der zu addierenden Tage ein ");
            int anzahl = 0;

            while (!(Int32.TryParse(Console.ReadLine(), out anzahl)))
            {
                Console.WriteLine("Sie müssen eine Ganzzahl eingeben");
            }

            for (int i = 0; i < anzahl; i++)
            {
                dteingabe = dteingabe.AddDays(1);
                if (dteingabe.DayOfWeek == DayOfWeek.Saturday || dteingabe.DayOfWeek == DayOfWeek.Sunday)
                    i--;
            }

            Console.WriteLine("Das Enddatum (ohne Wochenende gerechnet) ist der {0} ({1})",                                
                              dteingabe.Date.ToShortDateString(), dteingabe.DayOfWeek);
            Console.ReadLine();
        }
    }
}
1x
vote_ok
von wladi-g (1310 Punkte) - 18.06.2014 um 16:42 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.IO;

namespace WerktageAddition
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            int tage = 0;
            DateTime now = DateTime.Now;
            string zeile = "";
            string path = @"C:\kalender.txt";
            List<DateTime> feiertage = new List<DateTime>();
            if (File.Exists(path))
            {
                StreamReader reader = new StreamReader(path);
                while (!reader.EndOfStream)
                {
                    zeile = reader.ReadLine();
                    zeile = zeile.Remove(0, zeile.IndexOf(",") + 2);
                    feiertage.Add(Convert.ToDateTime(zeile));
                }
            }

            do
            {
                Console.Write("Bitte geben Sie die Anzahl der zu addierenden Tage ein: ");
            } while (!int.TryParse(Console.ReadLine(), out tage));

            for (int i = 0; i < tage; i++)
            {
                now = now.AddDays(1);
                while (now.DayOfWeek == DayOfWeek.Saturday || now.DayOfWeek == DayOfWeek.Sunday || feiertage.Contains(now.Date))
                    now = now.AddDays(1);
            }
            Console.WriteLine(now);
        }
    }
}
vote_ok
von Torbo (880 Punkte) - 01.06.2015 um 08:57 Uhr
Quellcode ausblenden C#-Code
using System;

namespace Werktageberechnen
{
    class Rechner
    {
        public static void Rechnen(int tage)
        {
            var dateTime = DateTime.Today;
            
            for (var i = 0; i < tage; i++)
            {
                dateTime = dateTime.AddDays(1);
                if (dateTime.DayOfWeek == DayOfWeek.Saturday || dateTime.DayOfWeek == DayOfWeek.Sunday)  dateTime=dateTime.AddDays(2);      
            }
            Console.WriteLine(dateTime);
        }
    }
}
vote_ok
von stbehl (1640 Punkte) - 12.02.2018 um 10:26 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TrainYourProgrammer53
{
    class Program
    {
        static void Main(string[] args)
        {
            int zaehler = 1;
            Console.WriteLine("Wie viele Tage sollen auf den heutigen addiert werden?");
            string eingabe = Console.ReadLine();
            TimeSpan tage = TimeSpan.Parse(eingabe);
            DateTime heute = DateTime.Today;
            DateTime ausgabe = DateTime.Today;
            TimeSpan tag = new TimeSpan(1, 0, 0, 0);

            while (zaehler <= Convert.ToInt32(eingabe))
            {
                ausgabe = ausgabe.Add(tag);
                if (Convert.ToString(ausgabe.DayOfWeek) == "Saturday")
                {
                    ausgabe = ausgabe.Add(tag);
                    ausgabe = ausgabe.Add(tag);
                }
                zaehler++;
            }
            Console.WriteLine("{0:dddd}", ausgabe);



            Console.ReadKey();
        }
    }
}
vote_ok
von stcalvin (970 Punkte) - 15.02.2018 um 10:13 Uhr
Quellcode ausblenden C#-Code
        static void Aufgabe_52()
        {
            DateTime jetzt = DateTime.Now;
            DateTime dann = new DateTime();

            Console.Write("Wie viele Tage wollen Sie arbeiten?  ");
            var tage = Convert.ToInt32(Console.ReadLine());

            while (tage > 0)
            {
                if (jetzt.DayOfWeek != DayOfWeek.Saturday && jetzt.DayOfWeek != DayOfWeek.Sunday)
                {
                    jetzt = jetzt.AddDays(1);
                    tage--;
                }
                else
                {
                    jetzt = jetzt.AddDays(1);
                }
            }
            Console.WriteLine(jetzt.ToString("dd.MM.yyyy"));
        }
vote_ok
von JKooP (18090 Punkte) - 02.05.2021 um 16:32 Uhr
NET 5.x; C# 9.x; VS-2019
Quellcode ausblenden C#-Code
using System;

var start = new DateTime(2013, 7, 22);
var days = 7;

while(days != 0)
{
    if (start.DayOfWeek is not DayOfWeek.Saturday and not DayOfWeek.Sunday)
        days--;
    start = start.AddDays(1);
}

Console.WriteLine(start.ToShortDateString());
2115245

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.