Loading...
Eleonora13 avatar Eleonora13 0 Точки

Може ли малко помощ?

Задачата е : 

Имате задачата да откриете и поправите грешките във вече написан програмен код, като използвате дебъгера на Visual Studio. За целта трябва да проследите изпълнението на програмата, за да откриете тези редове от кода ѝ, които пораждат неправилен или неочакван резултат.

Разполагате с програма (т.е. със съществуващ програмен код) който се опитва да преброи неработните дни между две дати подадени във формат ден.месец.година (например между 1.05.2015 и 15.05.2015 има 5 неработни дни - съботи и недели).

Можете ли да ми кажете къде е грешката в този код: 

using System;
using System.Globalization;

class HolidaysBetweenTwoDates
{
    static void Main()
    {
        var  startDate = DateTime.ParseExact(Console.ReadLine(),
            "dd-mm-yyyy", CultureInfo.InvariantCulture);
        var    endDate = DateTime.ParseExact(Console.ReadLine(),
            "dd-mm-yyyy", CultureInfo.InvariantCulture);
        var holidaysCount = 0;
        for (var date = startDate; date <= endDate; date.AddDays(1))
        {
            if (date.DayOfWeek == DayOfWeek.Saturday &&
                date.DayOfWeek == DayOfWeek.Sunday)
            {
                holidaysCount++;
                Console.WriteLine(holidaysCount);
            }
            else
            {
                Console.WriteLine("0");
            }
        }
    }
}

Тагове:
0
C# OOP Basics
Thedi avatar Thedi 200 Точки

Здравей

Не съм тествал, но на пръв поглед тази проверка:

  if (date.DayOfWeek == DayOfWeek.Saturday && date.DayOfWeek == DayOfWeek.Sunday) {

Проверява дали деня е Събота и Неделя едновременно и това няма как да е възможно. Трябва да бъде "||" (или).

  if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday) {

Също така в момента изкарва на екрана броя на почивните дни след всяко завъртане на цикъла, а предполагам трябва да е след като мине цялото преброяване. Това означава, че следния код трябва да бъде изкаран извън цикъла.

   Console.WriteLine(holidaysCount);

Предполагам другото принриране след този ред е напълно излишно също и трябва да бъде премахнато.

 else
            {
                Console.WriteLine("0");
            }

Цикъла е безкраен защото трябва да презапишеш датата. 
 

for (var date = startDate; date <= endDate; date = date.AddDays(1))

Ако искаш да ползваш формата който е написан трябва да промениш и формата който очакват входните данни там където се приемат в случая търси с "-" (dd-mm-yyyy). Месеците във форматите трябва да са с големи Букви ("MM"). 


Според календара ми трябва са 4 почивните дни между тези две дати.

0
20/02/2018 22:47:33
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

else в случая е излишен. и изписването на крайния резултат трябва да е извън цикъла . и вместо && трябва да || защото те интересува един от 2та случая не и 2та да са верни,тъй като събота няма да е вярна за неделя и обратното.Трябва ти случая когато поне едно от 2те условия е вярно.и това е.

0
20/02/2018 22:36:17
dydimitrov avatar dydimitrov 41 Точки

При проверката за деня дали е равен на събот или неделя трябва да използваш логическо или || вместо &&.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.