Využij akce až 30 % zdarma při nákupu e-learningu. Více informací. Zároveň je tento týden sleva až 80 % na e-learning týkající se C# .NET
Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
Avatar
Frestyle
Člen
Avatar
Frestyle:12.3.2018 19:12

Mám kód, který by měl fungovat, ale vyhazuje mi chyby. Prosím jak to správně zapsat?

public static string Saturday(int day)
{
    DateTime actualDate = DateTime.Parse(DateTime.Now.Date.ToString("1.MMMM yyyy"));
    int b = 0;
    int r = 0;
    int ina = 0;
    for (int a=1;a<day;a++)
    {
        DateTime startTime = actualDate.AddDays(a);
        if (startTime.DayOfWeek == DayOfWeek.Saturday)
        {
            string startTim = actualDate.AddDays(a).Date.ToString("d");
            int number = Convert.ToInt32(startTim);
            if (number % 2 == 0)
                b++;
            else
                r++;
        }
    }
    return b+", "+r;
}
 
Odpovědět
12.3.2018 19:12
Avatar
Odpovídá na Frestyle
Tomáš Vitek:12.3.2018 19:32

Ahoj,
můžeš prosím uvést, čeho se vlastně snažíš dosáhnout a na kterou chybu narážíš?

 
Nahoru Odpovědět
12.3.2018 19:32
Avatar
Frestyle
Člen
Avatar
Frestyle:12.3.2018 19:38

Chci dosáhnout toho, že mi řekne kolik je lichých a sudých víkendů. Chyba je:

DateTime startTime = actualDate.AddDays(a);
 
Nahoru Odpovědět
12.3.2018 19:38
Avatar
Odpovídá na Frestyle
don.jarducius:12.3.2018 19:50

Co prosím znamená lichý a sudý víkend? Má to být lichý sudý od začátku roku? ...nebo od začátku měsíce?

Nahoru Odpovědět
12.3.2018 19:50
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Frestyle
Člen
Avatar
Frestyle:12.3.2018 20:00

Od začátku měsíce

 
Nahoru Odpovědět
12.3.2018 20:00
Avatar
Odpovídá na Frestyle
Matúš Olejník:12.3.2018 20:02

Nadpis je "Zjištění lichého víkudnu" (s chybou, čiže vidno že potrebuješ pomoc ale nezaujíma
ťa ako uľahčiť prácu tým ktorí ti budú chcieť pomôcť) a teraz vo vlákne píšeš úplne niečo iné, naviac nie celkom úplné, "že mi řekne kolik je lichých a sudých víkendů". Keby si rovno vložil aj výpis chyby z konzoly tak by hneď bolo vidno čo je zle a teda aj ten kto veľmi nerobí s C# by vedel pomôcť, hádam že ti to tam aj pekne po anglicky vypíše.

Editováno 12.3.2018 20:03
Nahoru Odpovědět
12.3.2018 20:02
/* I am not sure why this works but it fixes the problem */
Avatar
Frestyle
Člen
Avatar
Odpovídá na Matúš Olejník
Frestyle:12.3.2018 20:09

Nevypisuje nic. Jen spatně zobrazí

 
Nahoru Odpovědět
12.3.2018 20:09
Avatar
Odpovídá na Frestyle
Matúš Olejník:12.3.2018 20:13

Na základe toho čo si napísal "ale vyhazuje mi chyby." ti to nejakú chybu vypíše, ale teraz píšeš že chybou to neskončí len proste dostaneš zlý výsledok. Tak ako?

Nahoru Odpovědět
12.3.2018 20:13
/* I am not sure why this works but it fixes the problem */
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Frestyle
Člen
Avatar
Frestyle:12.3.2018 20:19

Tím bylo myšleno v zobrazení. Chybové hlášky nemám. Jen na místo textu v labelu mi to vypisuje label22. Zdá se mi, že tu řešíte jen překlepy a slovíčkaření :-)

 
Nahoru Odpovědět
12.3.2018 20:19
Avatar
Odpovídá na Frestyle
Matúš Olejník:12.3.2018 20:30

Slovíčkarenie?? Veď týmto výsluchom sme sa dostali úplne k inému problému než bolo pôvodné zadanie..

Nahoru Odpovědět
12.3.2018 20:30
/* I am not sure why this works but it fixes the problem */
Avatar
Frestyle
Člen
Avatar
Frestyle:12.3.2018 20:34

Nevidím to z druhý strany. Asi to po sobě číst, tak si budu taky něco myslet. Jde mi o to zjistit počet lichých a sudých víkendů v aktuálním měsíci od 1 dne

 
Nahoru Odpovědět
12.3.2018 20:34
Avatar
Odpovídá na Frestyle
don.jarducius:12.3.2018 20:43

To je stále více se rozšiřující folklór...

To label22 nebude z téhle funkce, bude to od jinud.

public static string Saturday(int day)
{
// O fous lepší implementace bez parsování
    DateTime actualDate = DateTime.Now.AddDays(-DateTime.Now.Day+1);
    int b = 0;
    int r = 0;
    int ina = 0;
    for (int a=1;a<day;a++)
    {
        DateTime startTime = actualDate.AddDays(a);
        if (startTime.DayOfWeek == DayOfWeek.Saturday)
        {
            var number = actualDate.AddDays(a).Day;
            if (number % 2 == 0)
                b++;
            else
                r++;
        }
    }
    return string.Format("{0}, {1}",b,r);
}

Trochu jsem ti ten kód poupravil, je zbytečné to převádět na string a pak zpět na datum nebo číslo.

Kód vyjadřuje kolik je sobot které mají lichý a sudý den. Nikoli lichý a sudý víkend. Ten kód by měl spíše být takto:

public static string Saturday(int day)
{
    DateTime actualDate = DateTime.Now.AddDays(-DateTime.Now.Day+1);
    int b = 0; // počet sudých
    int r = 0; // počet lichých
    int ina = 0; // pořadí víkendu
    for (int a=1;a<day;a++)
    {
        DateTime startTime = actualDate.AddDays(a);
        if (startTime.DayOfWeek == DayOfWeek.Saturday)
        {
           ina++;
            if (ina % 2 == 0)
                b++;
            else
                r++;
        }
    }
    return string.Format("Počet sudých víkendů {0}, počet lichých víkendů {1}",b,r);
}
Editováno 12.3.2018 20:44
Nahoru Odpovědět
12.3.2018 20:43
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Frestyle
Člen
Avatar
Odpovídá na don.jarducius
Frestyle:12.3.2018 20:59

Takhle to funguje skvěle. Děkuju

 
Nahoru Odpovědět
12.3.2018 20:59
Avatar
Tomáš Vitek:12.3.2018 21:04

Já jen dodám, že mi přijde zbytečné požadovat jako argument počet dní v měsíci, když je jednoduché si je zjistit přímo pomocí DateTime.DaysIn­Month, tedy:

static string Saturday()
        {
            int liche = 0;
            int sude = 0;
            int celkove = 0;
            int dny = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
            DateTime prvniho = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);

            for(int i = 0; i < dny; i++)
            {
                if (prvniho.AddDays(i).DayOfWeek == DayOfWeek.Saturday)
                {
                    celkove++;
                    if (celkove % 2 == 0)
                        sude++;
                    else
                        liche++;
                }
            }
            return String.Format("Liché soboty v měsíci: {0}, sudé soboty v měsíci: {1}", liche, sude);
        }
 
Nahoru Odpovědět
12.3.2018 21:04
Avatar
HONZ4
Člen
Avatar
Odpovídá na Frestyle
HONZ4:12.3.2018 21:13

pokud je něčí příspěvek řešením tvého problému, tak jej tak označ ;)

 
Nahoru Odpovědět
12.3.2018 21:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.