Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
mudonja
Člen
Avatar
mudonja:20.11.2012 16:34

Zdravím chtěl bych poradit jak mám udělat program v c# na výpočet data velikonoc, takže když uživatel zadá rok tak by se mu tam měl objevit den. Jelikož je to pohyblivý svátek tak vůbec netuším jak to udělat :) stačilo by mi to nějak vysvětlit. :D Díky za odpověd

 
Odpovědět
20.11.2012 16:34
Avatar
Petr Nymsa
Tvůrce
Avatar
Nahoru Odpovědět
20.11.2012 18:04
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
mudonja
Člen
Avatar
mudonja:21.11.2012 9:26

No to už sem si četl ale pořád to nechápu.
a = rok mod 19 (pozn.: po 19 letech se měsíční cyklus opakuje ve stejné dny)
nevím co je to MOD, a vím že si musím udělat spoustu proměných potom ty vzorce a nakonec nějaké ty podmínky.

 
Nahoru Odpovědět
21.11.2012 9:26
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na mudonja
David Hartinger:21.11.2012 9:45

MOD je zbytek po celočíselném dělení, v céčkových jazycích se místo něj používá znak procenta %.

Editováno 21.11.2012 9:46
Nahoru Odpovědět
21.11.2012 9:45
You are the greatest project you will ever work on.
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na mudonja
Petr Nymsa:21.11.2012 9:49

Proč spoustu proměnných ?

Nahoru Odpovědět
21.11.2012 9:49
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
mudonja
Člen
Avatar
mudonja:22.11.2012 20:07

no takhle by nějak mohl vypadat ten výpočet, co vy na to?
int a = Y % 19;
int b = Y / 100;
int c = Y % 100;
int d = b / 4;
int e = b % 4;
int f = (b + 8) / 25;
int g = (b - f + 1) / 3;
int h = (19 * a + b - d - g + 15) % 30;
int i = c / 4;
int k = c % 4;
int L = (32 + 2 * e + 2 * i - h - k) % 7;
int m = (a + 11 * h + 22 * L) / 451;
int mesic = (h + L - 7 * m + 114) / 31;
int den = ((h + L - 7 * m + 114) % 31) + 1;

Editováno 22.11.2012 20:08
 
Nahoru Odpovědět
22.11.2012 20:07
Avatar
matesax
Tvůrce
Avatar
Odpovídá na mudonja
matesax:22.11.2012 20:22

Nikdy! :) Tagy Code? :)

public DateTime EasterDate(int year)
{
    int month = 3,
        golden = year % 19 + 1,
        century = year / 100 + 1,
        X = (3 * century) / 4 - 12,
        Y = (8 * century + 5) / 25 - 5,
        sunday = (5 * year) / 4 - X - 10,
        epact = (11 * golden + 20 + Y - X) % 30;

    epact += (epact == 24) ? 1 : ((epact == 25) && (golden > 11)) ? 2 : 0;

    int n = 44 - epact;

    if (n < 21) { n = n + 30; }

    int p = (n + 7) - ((sunday + n) % 7);

    if (p > 31)
    {
        p -= 31;
        month = 4;
    }

    return new DateTime(year, month, p);
}
Editováno 22.11.2012 20:25
 
Nahoru Odpovědět
22.11.2012 20:22
Avatar
matesax
Tvůrce
Avatar
matesax:22.11.2012 20:26

Achjo - no jo - omlouvám se... :[

public DateTime EasterDate(int year)
{
    int month = 3,
        golden = year % 19 + 1,
        century = year / 100 + 1,
        X = (3 * century) / 4 - 12,
        Y = (8 * century + 5) / 25 - 5,
        sunday = (5 * year) / 4 - X - 10,
        epact = (11 * golden + 20 + Y - X) % 30;

    if (epact == 24) { epact++; }

    if ((epact == 25) && (golden > 11)) { epact++; }

    int n = 44 - epact;

    if (n < 21) { n = n + 30; }

    int p = (n + 7) - ((sunday + n) % 7);

    if (p > 31)
    {
        p -= 31;
        month = 4;
    }

    return new DateTime(year, month, p);
}
 
Nahoru Odpovědět
22.11.2012 20:26
Avatar
mudonja
Člen
Avatar
mudonja:22.11.2012 20:35

No to už sem na netu našel taky :)jinak díky za snahu, ale zapoměl sem zmínit, že to nesmím použít v dateTime, proto vůbec nevím s programováním začínám :)

 
Nahoru Odpovědět
22.11.2012 20:35
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na mudonja
David Hartinger:24.11.2012 11:08

Proměnné by se měly jmenovat podle toho, co uchovávají. Ta abeceda co jsi tam vyjmenoval není nejlepší nápad.

Nahoru Odpovědět
24.11.2012 11:08
You are the greatest project you will ever work on.
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 10 zpráv z 10.