Autor Zpráva
IdemeNaHavaj
Profil
Jednoduchý príklad? Wikipedia mi moc neporadila a na iných stránkach som to nenašiel.

Zdroj z wiki:
Rok vydelíme 19 a zvyšok označíme "a";

Rok vydelíme 4 a zvyšok označíme "b";

Rok vydelíme 7 a zvyšok označíme "c";

Pre 20. a 21. storočie platia konštanty:

m = 24;
n = 5;
Vyrátame:

(19*a + m) / 30 a zvyšok označíme "d";
(n + 2b + 4c + 6d) / 7 a zvyšok označíme "e";

Pre marec platí:

22 + d + e = Veľkonočná nedeľa;
Pre apríl platí:

d + e - 9 = Veľkonočná nedeľa;

Rok vydelíme 19 a zvyšok označíme "a";
2023/19 = 106,4736842105263 - zvyšok čoho označím "a"? dňa mesiaca? :)

Potom výpočet (19*a + m) / 30 a zvyšok označíme "d"; "a" nahradím zvyškom a zasa z celku si ako zistím čo je zvyšok aby som ho označil "d"?
Prosím napíšte mi to v nejakom príklade lebo ja tomu nie a nie pochopiť. Mier.
Giga
Profil
Hovorí Ti niečo pojem "celočíselné delenie" ?
IdemeNaHavaj
Profil
Giga:
ak by mi niečo niečo hovorilo tak sa tu nepytam
Bubák
Profil
IdemeNaHavaj:
Základní školu máš za sebou?
IdemeNaHavaj
Profil
Bubák:
A ty? Takéto trapné narážky bežali pred 30 rokmi.
Firibix
Profil
Reakce na IdemeNaHavaj:
Celočíselné dělení se učí ve 4. třídě. Ukáži na tvém příkladu 2023 děleno 19:

1. Vezmeme první cifru dělence, to je dvojka. Kolikrát se vejde devatenáctka do dvojky? Nulakrát. První číslice výsledku je tedy nula. Nulakrát devatenáct je nula, a kolik zbývá do dvojky? Dva. Zbytek je tedy dva.
2. Pokračujeme s druhou cifrou dělence a před ní napíšeme zbytek z předchozího kroku, vznikne tedy číslo 20. Kolikrát se vejde devatenáctka do dvacítky? Jedenkrát. Druhá číslice výsledku je jednička. Jedenkrát devatenáct je devatenáct, a kolik zbývá do dvacítky? Jedna, to je zbytek.
3. Vezmeme třetí cifru dělence, napíšeme před ní předcházející zbytek a dostaneme číslo 12. Kolikrát se vejde devatenáctka do dvanáctky? Nulakrát. Další číslice výsledku je nula. Nulakrát devatenáct už víme, že je nula; do dvanáctky zbývá dvanáct, tím máme zbytek.
4. Bereme poslední cifru dělence a nesmí nás vyděsit, že před ní připisujeme dvojciferný zbytek z předchozího kroku. Zkrátka máme číslo 123, devatenáctka se do něj vejde šestkrát. Devatenáct krát šest je 114, do 123 zbývá devět.
5. Žádné další cifry dělence už nezbývají, takže jsme se dostali na konec. Výsledek je 106 se zbytkem 9 (výsledný zbytek je ten z posledního kroku).

Ve tvém příkladu je tedy a = 9.

Je-li libo, můžeme vyzkoušet, jestli nám vyšel správný výsledek. 106 krát 19 je 2014, přičteme 9 a dostaneme původních 2023. Máme to dobře.
Keeehi
Profil
IdemeNaHavaj:
No a to co potřebuješ ještě vědět je, že zbytek po celočíselném dělení se v angličtině nazývá modulo a v php ho zjistíš operátorem %.
juriad
Profil
Myslím, že není třeba osočování tím, kdo má jakou školu.

Když dělíš dvě celá čísla, ne vždy bude výsledkem celé číslo. Například, jak už Firibix ukázal 2023 / 19 ukáže na kalkulačce 106.47368421052632.

S operátorem děleno / jsou spojeny dva další operátory - celočísledné dělení a zbytek po dělení.
Oba mají různé zápisy v různých programovacích jazycích. Uvededu 2 pro web nejběžnější:

# PHP
intdiv(2023, 19) = 106
2023 % 19 = 9

// JS
floor(2023 / 19) = 106
2023 % 19 = 9

První odpovídá na otázku, kolik bonbónů dostane každé, když jich máš rozdělit 2023 mezi 19 dětí. Druhý odpovídá na otázku, pokud je rozdělíš spravedlivě, kolik jich zůstane - to je ten zbytek po dělení.

Celý výpočet uvedený v [#1] by v PHP vypadal takto. V JS to bude stejné jen bez těch $.
$a = $rok % 19;
$b = $rok % 4;
$c = $rok % 7;

$m = 24;
$n = 5;

$d = (19 * $a + $m) % 30;
$e = ($n + 2 * $b + 4 * $c + 6 * $d) % 7;

$marec = 22 + $d + $e;
$april = $d + $e - 9;
N71
Profil *
Ještě dodatek k datu Velikonoc. Je to i ve světě poměrně důležitý svátek, takže občas má i dedikovanou funkci. V PHP například easter_date.
Radek9
Profil
juriad:
Jen doplním, že v JS je to Math.floor (nikoli pouze floor) a ani to není úplně správně, protože to může vrátit špatný výsledek pro záporná čísla (např. Math.floor(-2023 / 9) vrátí -225, ačkoli by měl být výsledek -224). Vhodnější je použít funkci Math.trunc, která prostě osekne desetinnou část (nehledě na znaménko). V případě použití BigInt čísel dokonce stačí pouze / bez jakékoli další funkce, tedy 2023n / 9n.
jirka2
Profil
Co to zkusit takto:
kalendar.beda.cz/vypocet-velikonocni-nedele
Nebo jinak:
kalendar.beda.cz/ostatni-algoritmy-vypoctu-velikonocni-nedele
Kcko
Profil
Prvně +1 za juriad-ovu odpověd

Jinak můžeš zkusit tuhle metodu, kterou jsem kdysi psal na jednom e-shopu, zdá se mi, že pořád funguje ;)


    public function getEasterDateTime($year) 
    {
          $base = new \DateTime("$year-03-21");
          $days = easter_days($year);
          
          return $base->add(new \DateInterval("P{$days}D"));
    }

A tohle je sic Nette komponenta, ale ten vnitřek si můžeš dát jinam a řeší i jiné věci, jako svátky, velikonoční pondělí atd.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0