Névjegyzék

Hány hónap eltelt két dátum között. Hogyan lehet egy matematikai képlet a hónap számát a napok számának kiszámításához? Hány nap a dátumok között? Utasítás

jegyzet: Ez a bejegyzés a Cmcenroe.me/2014/12/05/days-in-month-formula.html cikk fordítása ( I. rész), valamint a szerzői joggal védett bővítmény ( II. Rész.). Nem szabad komolyan kezelni, hanem inkább az elme felmelegedését, amely nem igényel többet, mint az aritmetikai ismereteket, és nem praktikus alkalmazás. Minden kellemes olvasás!

I. rész

Bevezetés

A közelmúltban, egy másik álmatlan éjszaka után gondoltam az év minden hónapjában lévő napok számának memorizálására. Ehhez van egy szám, és az a módja, hogy megfontoljuk az ujjait a csuklókon, de egyik sem, sem a másik elrendelte. Gondoltam, és hogy van-e matematikai képlet, hogy megoldja az ilyen feladatot, és anélkül, hogy megtaláltam volna, amikor kiváltottam a tanulmányt - kihívást dobtam, hogy létrehozzam.

Más szóval történő formalizálása, meg kell találni a funkciót. f.Ez az érték f (x) Minden hónapban x.az 1-től 12-ig terjedő számot képviseli. Az argumentum és a funkciók értékei:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 28 31 30 31 30 31 31 30 31 30 31

Ha van vágy, hogy megpróbálja megkezdeni a döntésemet, most itt az ideje. Ha jobban szeretné látni a kész választ, akkor nézd meg a spoiler alá.

Válasz


Az alábbiakban az én lépéseket találom meg a megoldást.

Matematikai készülék

Először is, részeg voltunk a memóriában, két létfontosságú az üzemeltető feladatainak megoldása során: egész szám és egyensúly a megosztásból.

Egész számez egy olyan operátor, amelyet számos programozási nyelven használnak, amikor két egész számot osztanak el és elvetik a magánszemélytől frakcionált rész. Én ábrázolom. Például:

A megosztás fennmaradó része Ez egy olyan operátor, amely a megosztottságból származik. Sok programozási nyelven egy szimbólumot alkalmaznak % , Használom a típus tervezését, például:

Megjegyzem, hogy a divízió egyenlege egyenlő prioritással rendelkezik a divízióval.

Alapok

Tehát alkalmazzuk matematikai készülékünket az alapformátum megszerzéséhez. Normál hónap, 30 vagy 31 nap, így használhatjuk az alternatív módon 1 vagy 0, majd egyszerűen hozzáadhatjuk ezt a számot az állandó:

A táblázatot kapjuk, a helyes értékeket kiosztják:
x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 30 31 30 31 30 31 30 31 30 31 30

Jó kezdés! Már január és hónapokig már a január és a július között vannak megfelelő értékek. Február egy különleges eset, és egy kicsit később foglalkozunk vele. Július után a fennmaradó hónapokért a 0 és az 1. szerzés sorrendjét az ellenkezőjére kell cserélni.
Ehhez hozzáadhatunk a delimo 1-hez:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 30 31 30 31 30 31 30 31 30 31 30 31

Most a helyes értékek augusztus és december között, de amint azt feltételezték, a más hónapok értékei helytelenek. Lássuk, hogyan kombinálhatjuk ezeket a képleteket.

Maszkfedés

Ehhez szükség van egy részre, de - de - mivel úgy tűnt számomra, hogy nekem tűnt nekem - arra gondoltam, hogy egy másik megoldás megoldás a funkció egyik részén ugyanazon az intervallumon, a másik pedig a másik oldalon.
Úgy gondolom, hogy a legegyszerűbb módja annak, hogy egy olyan kifejezést találjunk, amely 1 az egyik alkalmazási területen és 0-ban 0-ban található. Az a módszer, amelyben a kifejezést szaporodott érvelésre van szükségünk, kizárjuk a felhasználás területén kívüli képletből, neveztem "a maszk bevezetését", ezért az ilyen viselkedés hasonló a kis maszkhoz.
Ennek a módszernek a alkalmazása, a funkciónk utolsó részében, meg kell találni az 1-es értékű kifejezést, és - mivel az argumentum értékei mindig 16-nál kisebbek - erre a célra tökéletesen alkalmas egy egész számra 8. \\ T
x. 1 2 3 4 5 6 7 8 9 10 11 12
x. ⁄ 8 ⌋ 0 0 0 0 0 0 0 1 1 1 1 1

Most ezzel a maszkkal, az 1-es divízió kifejezésével, az 1 helyett helyettesíthetjük a 0 és az 1 képlet szerinti formulát fordítva:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 30 31 30 31 30 31 31 30 31 30 31

Eureka! Ez igaz, kivéve február. Meglepetés meglepetés.

február

Minden hónapban, 30 vagy 31 napon, kivéve február 28-ot (ugrás éve, túllépje ezt a feladatot). Jelenleg a mi formula szerint 30 nap, így jó lenne kivonni egy 2-es kifejezést.
A legjobb, hogy sikerült jöjöttem fel, ami február után minden hónapban maszkot vet fel:
x. 1 2 3 4 5 6 7 8 9 10 11 12
2 mod. x. 0 0 2 2 2 2 2 2 2 2 2 2

Az alapállandó 28-as módosításával 2 a hónap hátralevő részének hozzáadásával megkapjuk a képletet:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 29 28 31 30 31 30 31 31 30 31 30 31

Sajnos január most rövidebb 2 napig. De szerencsére, hogy csak az első hónapban alkalmazzák kifejezést, nagyon egyszerű: az ellenkezője lekerekítése. Szorozzuk meg a 2-et, miután megkapjuk a végső képletet:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 28 31 30 31 30 31 31 30 31 30 31

Utólag

Itt van egy képlet az év bármely hónapjában az év bármely hónapjában, a legegyszerűbb aritmetikai felhasználásával. A következő alkalommal, amikor emlékszel, hány nap szeptemberben egyszerűen végezze el ezt az egysoros funkciót a JavaScript-en:

F funkció f (x) (Visszatérés 28 + (X + Math.Floor (x / 8))% 2 + 2% x + 2 * Math.Floor (1 / x);)

II. Rész.

Bevezetés

Az első részben egy rövid és akár enyhén elegáns képletet kaptunk, amelyek fő előnyei a matematikai készülékek egyszerűsége, az ágak hiánya és feltételes kifejezések, tömörség. A hátrányok továbbá, hogy nem fogja alkalmazni azt a projektben - magában foglalhatja a viszkózus és nem ugrás év ellenőrzésének hiányát.
Így beállítottam egy feladatot egy funkció létrehozásához f.Ez az érték f (x, y) Minden hónapban x.az 1-től 12-ig terjedő számot képviseli y., több 0, egyenlő a hónapok száma a hónapban x. évben y..
A spoiler alatt türelmetlenül kész válasz van, kérem a többit, hogy kövessen engem.

Válasz

A megosztás fennmaradó része: mod. és ⌊⌋

A könnyebb áttekinthetőség érdekében, egyetértünk abban, hogy bizonyos formulák, a szétválás üzemeltető a maradékot helyébe alacsonyabb zárójelben, ahol szükségesnek látszott számomra:

Szökőév

További naptári nap kerül bevezetésre az ugrás évre: február 29. Amint ismeretes, az ugrás év, több 4 és nem többszörös 100, vagy többszöröse 400. E nyilatkozattal azonos kifejezést írunk:

Ahhoz, hogy ezt az expressziót algebraihoz hozza, az űrlap kifejező injekciójának eredményére kell alkalmazni:

Ami lehetővé teszi az 1-et, ha a maradékot anélkül osztja el, ha a maradékkal elosztva, hogy a napok számának meghatározására szolgáló képletben használják.

Függvényként g " Használhat 1 mínusz egyenleget a megosztástól:

x. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g "(x) Végtelenség. 1 0 0 0 0 0 0 0 0 0 0 0 0 0

Könnyű észrevenni, hogy a megosztottság és az osztó növelésével a megfelelő képletet kapjuk, ha:
x. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g "(x) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Így a kifejezés írni fog:


És írja be a kifejezést:

E megközelítés alkalmazása a következő funkciót kapjuk. g (y), amelynek értéke 1, ha az év ugrás, vagy 0 az ellenkező esetben:

y. 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
g (y) 0 0 1 0 0 0 1 0 0 0 1
y. 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000
g (y) 1 0 0 0 1 0 0 0 1 0 0

Az epeári év elszigetelt volt.

Emlékeztetem arra, hogy az elfogadott megállapodás keretében a megosztottságtól való egyensúly megszerzésének üzemeltetője a mod.és ⌊⌋.

Maszkfedés

A képletben a rész egy olyan módosítás, amely 2 naptól januárig terjed. Ha eltávolítja a 2-es szorzót és a számlálón, hogy 1-et cserélje ki a 2-en, akkor ez a képlet 2 napot adjon hozzá 2 naptól januárig és 1 napra februárig, ami kulcsfontosságú a nap hozzáadásához az ugrás évben. Az egyértelműség érdekében használja a képlet közbenső értékben g (y) és minőségben y. 2000-ben (ugrás) és 2001 (nem ugrott) évek:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f (X, 2001) 30 28 31 30 31 30 31 31 30 31 30 30

Értékek minden hónapban, kivéve január, nem ugrás év igaz.

A bosszantó félreértések kijavításához adjunk hozzá január 1-jét, amelyet már ismert nekünk:


Vagy:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f (X, 2001) 31 28 31 30 31 30 31 31 30 31 30 30

Következtetés

Ennek eredményeképpen már jelentősen sokkal nehezebb, de egy univerzálisabb képlet, amely szintén felhasználható az adott év egy hónapjának számának megszerzésére:

F funkció f (x, y) (visszatérés 28 + ((x + matematika (x / 8))% 2) + 2% x + matematika ((1 + (1 + (1 - (Y% 4 + 2)% (Y% 4 + 1)) * (((Y% 100 + 2)% (Y% 100 + 1) + (1 - (Y% 400 + 2)% (Y% 400 + 1))) / x ) + Math.Floor (1 / x) - Math.Floor (((1 - (Y% 4 + 2)% (Y% 4 + 1)) * ((Y% 100 + 2)% (Y% 100 + 1)) + (1 - (Y% 400 + 2)% (Y% 400 + 1))) / x);)
Példa a c # i-tone.com/fanutzra.

1 . Nem tudom, hogyan kell használni egy hasonló mnemonikus, ezért kémkedtem a tabletta az interneten.
2 . "Alapok", vagy "szabály sok kivétellel", mint a legtöbb szabály.
3 . Kezdetben a római naptárban február volt az év utolsó hónapja, így van logika, hogy rövidebb, mint mindenki más. Az év végén is logika van az év végén, így hossza változó.

UPD. egy:
Az első rész alternatív fordítása

Ingyenes online kontúr kalkulátor. A Buchelli segít Önnek, és elmondja, hogy hány nap telt el a két meghatározott dátum között. Ezenkívül, ha szükség van rá, kiszámíthatja, hogy hány naptár, hétvége vagy munkanap (óra) tartalmazza az év vagy több év meghatározott időtartamát.

Hány nap a dátumok között? Utasítás

Csak egy konkrét napot kérsz az elejére és a végére, és kapja meg a számítás a másodpercek részesedése révén. Minden online számológép önállóan hisz. Ha megváltoztatja a hét kezdő napjait, az eredmény automatikusan újraszámításra kerül, figyelembe véve az ugrási évet.

FONTOS: A számításokból lehetetlenné válik a munkanapok / órák mai napi mutatóin keresztül, és számításként szolgál - az adatok eltérőek lesznek. Ezért jobb a számológép használata.

Tehát az eljárás:

  1. Azokon a területeken, „elemi Date” és „végső időpontja” választani a kezdeti és befejezési idő a referencia, kezdve 2013-végződő a jövőben 2018.
  2. Telepítse a munkaidő számát a következő mezőben. Alapértelmezés szerint ez a mező már 8 óra (40 órás munkahét), de megváltoztathatja ezt a számot.
  3. A képernyő jobb oldalán a banneren megjelenik a kapott eredmény: munkanapok, naptári napok és meghatározott időpontok közötti munkaidő. Az eredményeket másolni és menteni kell a dokumentumban.

A számológép használható

  1. A szankciók kiszámítása és a szerződések lejárta
  2. Hogyan lehet megérteni valamilyen erőforrás és határidők használatának hatékonyságát
  3. Hogy véletlenül ne hozzárendelje a hétvége feladatának időzítését
  4. Mennyi időt hagyott a határidőig

Példa:

Ön könyvelő vagy. A fej megkérdezte Önt a következő néhány percben, hogy adatokat szolgáltasson a munkaidő számáról, amelyet a vállalat minden munkatársa februárban kell kidolgozni. A könnyen meghatározható munkavállalók száma - számod van a szemed előtt. De az órák számát figyelembe kell venni ... és hány nap februárban? És az év ugrás? És milyen napok voltak hétvégék? Hogyan lehet meghatározni az ünnepek napjainak számát?

Megoldás: Csak használja a widgetünket. Minden információ automatikusan megkapja, nem kell asztali naptárakat és számológépeket.

Tetszett ez a számológép? Ezután próbálja meg más lehetőségünket

Szeretné tartani a számvitelt, jelentést küldeni és számításokat készíteni egy kényelmes és egyszerű webszolgáltatásban? Megpróbálok ingyenes 14 napos vázlatot. Buchetter! Gyorsan megtanítjuk Önt, hogyan kell használni a szolgáltatást, és válaszoljon az összes kérdésre!

Néhány feladat megoldásához egy táblázat létrehozásakor külön cellában vagy a képletben kell, adja meg az egy hónapos napok számát, hogy a programnak rendelkeznie kell a szükséges számításokkal. Az Excel a művelet végrehajtására szolgáló eszközökkel rendelkezik. Tekintsük különböző módszerek Ennek a szolgáltatásnak a alkalmazásai.

Számítsa ki az Excele-ban egy hónapos napok számát speciális kategóriás operátorokkal "Dátum és idő". Annak megállapítása, hogy pontosan melyik opciót alkalmazzák a legjobban, szükséged van, először állítsa be a művelet céljait. Ettől függően, hogy a számítás eredménye egy lapon különálló elembe kerülhet, és egy másik képletben is alkalmazható.

1. módszer: Az üzemeltetők napja és fogantyúk kombinációja

A legtöbb egyszerű út Megoldja ezt a feladatot az operátorok kombinációja NAP és Konmena.

Funkció NAP a piaci szereplők csoportjához tartozik "Dátum és idő". Ez egy adott számot jelez 1 előtt 31 . A mi esetünkben a feladat ez az üzemeltető Lesz jelzés utolsó nap hónapok a beépített funkcióval érvelés formájában Konmena.

Szintaxisüzemeltető NAP következő:

Nap (dátum_v_)

Ez az egyetlen argumentum e funkció "Numerikus formátumú dátum". Megkéri az üzemeltetőt Konmena. Azt kell mondani, hogy a numerikus formátumban szereplő dátum eltér a szokásos formátumtól. Például a dátum 04.05.2017 Egy numerikus formában úgy néz ki 42859 . Ezért ez a formátum Excel csak a belső műveletek esetében használja. Ritkán használják a sejtekben.

Operátor Konmena Úgy tervezték, hogy jelezze a hónap utolsó napjának sorszámát, amely a megadott hónapokban előre vagy vissza a megadott időpontban. A szintaxis funkció:

Conmines (nach_data; number_mets)

Operátor "Elemi dátum" Tartalmaz egy dátumot, amelyből a visszaszámlálás vagy a cellához való kapcsolódás, ahol található.

Operátor "Hónapok száma" Jelzi a hónapok számát, amelyekre a visszaszámlálásnak visszaszámlálnia kell.

Most nézzük meg, hogyan működik konkrét példa. Ehhez kiváló lapAz egyik olyan sejthez, amelyből egy bizonyos naptárszám be van írva. Szükséges a fenti operátorok sorozata, hogy meghatározzák, hogy hány nap a havi időszakban, amelyre ez a szám hivatkozik.


Általános képlet A következő űrlapot vettük:

Nap (meggyőzni (B3; 0))

Ebben a képletben a változó érték csak a sejtcím ( B3.). Így, ha nem szeretné végrehajtani az eljárást Mester funkciók, Szúrhat a képlet bármely iemezeiemen, egyszerűen helyettesíti a cella címét tartalmazó számot, amelyik releváns pontosan az Ön esetében. Az eredmény hasonló lesz.

2. módszer: A napok automatikus meghatározása

Nézzünk egy másik feladatot. Szükséges, hogy a napok száma nem jelenik meg egy adott naptárszámon, de az aktuális oldalon. Ezenkívül az időszakok változása automatikusan a felhasználói részvétel nélkül történik. Bár furcsanak tűnik, de ez a feladat könnyebb, mint az előző. Megoldani, még nyitva is Master offunkciók Nincs szükség, mivel a műveletet végrehajtó képlet nem tartalmaz változókat vagy linkeket a sejtekhez. Csak akkor tudsz vezetni a lap cellájába, ahol meg szeretné jeleníteni az eredményt, a következő képlet változatlan:

Nap (ördög (ma (); 0)))

A beépített funkció ma, amelyet ebben az esetben alkalmaztunk, megjeleníti a mai számot, és nincs argumentuma. Így a cellában az aktuális hónapban lévő napok száma megjelenik.

3. módszer: A napok számának kiszámítása komplex képletekben

A fenti példákban megmutattuk, hogyan lehet elvégezni a napok számának számítását egy hónapban a megadott naptárszám mentén, vagy automatikusan az aktuális hónapban az eredmény kimenetével egy külön cellában. De ez az érték megtalálható más mutatók kiszámításához. Ugyanakkor a napok számának kiszámítása a komplex képlet belsejében történik, és nem jelenik meg egy külön cellában. Lássuk, hogyan kell ezt csinálni a példában.

Meg kell tennünk, hogy az aktuális hónap végéig maradt napok száma megjelenjen a cellában. Az előző módszerhez hasonlóan ez az opció nem igényel nyitást Mester funkciók. Egyszerűen csak a következő kifejezésre vezethet a cellába:

Nap (Conmines (ma (), 0)) - nap (ma ())

Ezután a hónap végéig a napok száma megjelenik a megadott cellában. Minden nap az eredmény automatikusan frissül, és az új időszak kezdetétől kezdődik, a szám újra megkezdődik. Kiderül egyfajta visszaszámláló.

Amint azt látjuk, a megadott képlet két részből áll. Az elsőnek az első, aki a hónapok számának számításának már ismerős kifejezése:

Nap (ördög (ma (); 0)))

De a második részben kivonják ezt a mutatót a mai:

Napról napra ())

Így a számítás végrehajtásakor a napok számának kiszámításának képlete része bonyolultabb képlet.

4. módszer: Alternatív képlet

De sajnos a korábbi Excel 2007 program verziói hiányzik az üzemeltető Konmena. Hogyan lehet az alkalmazások régi verzióit használó felhasználók? Számukra egy ilyen lehetőség létezik egy másik képleten keresztül, ami masszívabb, mint a fent leírt. Lássuk, hogyan kell kiszámítani a napok számának számát a megadott naptárszám mentén ezzel az opcióval.

  1. Válassza ki a cellát az eredmény megjelenítéséhez, és menjen a kezelői argumentumok ablakához NAP Már ismerős számunkra. Telepítse a kurzort az ablak egyetlen mezőjébe, és kattintson az invertált háromszögre a Formula string bal oldalán. Menjen a szakaszra "Egyéb funkciók ...".
  2. Az ablakban Mester funkciók csoportban "Dátum és idő" Kiosztja a nevet "DÁTUM" és kattintson a gombra Rendben.
  3. A kezelőablak elindul DÁTUM. Ez a funkció átalakítja a dátumot a szokásos formátumból numerikus értékmelyet ezután kezelik az üzemeltetőt NAP.

    A megnyílt ablaknak három mezője van. Területen "Nap" Azonnal megadhatja a számot "egy". Ez változatlan cselekvés lesz bármilyen helyzetben. De két másik mezőnek alaposan meg kell tennie.

    Telepítse a kurzort a mezőbe "Év". Ezután menjen a piaci szereplők kiválasztására egy ismerős háromszögen keresztül.

  4. Mindegyik azonos kategóriában Mester funkciók Kiosztja a nevet "ÉV" és kattintson a gombra Rendben.
  5. A kezelői argumentumok ablak kezdődik ÉV. Az évet a megadott számon határozza meg. Az ablak egyetlen ablakában "Numerikus formátumú dátum" Jelöljön be egy linket egy olyan cellához, amely tartalmazza a kezdő dátumot, amelyre meg kell határoznia a napok számát. Ezt követően ne rohanjon a gombra Rendben, és kattintson a Névre "DÁTUM" a Formula sorban.
  6. Akkor visszatérünk az argumentum ablakba DÁTUM. Telepítse a kurzort a mezőbe "Hónap" és menjen a funkciók kiválasztásához.
  7. BAN BEN Varázsló funkciók Kattintson a névre "HÓNAP" és kattintson a gombra Rendben.
  8. A funkció argumentumok ablak kezdődik HÓNAP. Feladataik hasonlóak az előző operátorhoz, csak a hónap számát jeleníti meg. Az ablak egyetlen területén ugyanazt a hivatkozást állapítjuk meg az eredeti számra. Ezután a Formula sorban kattintson a névre "NAP".
  9. Vissza az érvablakba NAP. Itt csak egy kis vonalkódot kell tennünk. Az ablak egyetlen ablakában, amelyben az adatok már megtalálhatók, adjunk hozzá egy kifejezést a képlet végéig "-egy" Idézetek nélkül, valamint az üzemeltető után "+1" beállítást HÓNAP. Ezután kattintson a gombra Rendben.
  10. Amint láthatjuk, az előre kiválasztott sejtben a hónapban lévő napok száma, amelyekhez a megadott szám tartozik. A General Formula ilyen jellegű:

    Nap (dátum (év (D3); hónap (D3) +1; 1) -1)

A képlet titka egyszerű. Meghatározzuk a következő időszak következő napjának dátumát, majd egy napot vegyen be tőle, megkapva a napok számát a megadott hónapban. A képlet változó nagysága a sejthez való hivatkozás D3. két helyen. Ha kicseréli azt a cella címét, amelyben a dátum az Ön adott esetben az Ön adott esetben egyszerűen meghajthatja ezt a kifejezést a lap bármely eleméhez segítség nélkül. Mester funkciók.

Amint láthatja, számos lehetőség van arra, hogy megtudja a napok számát az Excelben. Pontosan mit kell használni a felhasználó végső céljától, valamint a program által használt program milyen verziójától.

A dátumok számológépét úgy tervezték, hogy kiszámítsa a napok közötti napok számát, valamint megtalálja a dátumot egy bizonyos számú nap hozzáadásával vagy kivonásával az ismert dátumhoz.

Napi napok hozzáadása

Annak érdekében, hogy megtudja, hogy milyen szám lesz egy bizonyos számú napon, használja ezt az opciót. Adja meg a kezdő dátumot és a hozzáadáshoz szükséges napok számát. A kivonáshoz használja az értéket mínuszsal. A számológépnek lehetősége van csak munkanapok hozzáadására.

A dátumok közötti napok számának kiszámítása

Ez a számítási módszer válaszol a kérdésre: "Hány nap telt el a dátumtól." Adja meg a kezdő dátumot és a befejezési dátumot, és kattintson a "Számítás" gombra. A számológép megmutatja, hogy hány nap van a belépett dátumok között. A különálló számológép megmutatja a munkanapok számát.

Ezzel az opcióval kiszámíthatja, hogy hány nap maradt egy bizonyos eseményhez, például a születésnapi vagy nyaralás előtt. Ehhez a kezdeti dátum mezőben adja meg az aktuális számot és a végső dátum mezőt - az események dátumát.

Ünnepek

A számológép kiszámíthatja, hozzáadhatja és levonhatja mind a naptári napokat, mind a munkavállalókat. Hivatalos nem működő Ünnepi napok vannak:

  • 1,2,3,5,6,8 január - Újévi ünnepek
  • Január 7 - ortodox karácsony
  • Február 23 - Az Állami Nap védelmezője
  • Március 8 - Nemzetközi Nőnap
  • Május 1 - Tavaszi és munkaügyi ünnep
  • Május 9 - Victory Nap
  • Június 12 - orosz nap
  • November 4 - Az emberek egységének napja

Ha az ünnepi nap szombaton vagy vasárnap esett, átkerül a legközelebbi munkanapra. De néha a hétvége átkerül a naptár másik helyére. Például, szombaton és vasárnap, aki az újévi ünnepekre esett, át lehet adni a májusi ünnepeket.

Számológép A napok kiszámításakor figyelembe veszi mind a hivatalos ünnepi dátumokat, mind az összes transzfert.

jegyzet: Ez a bejegyzés a Cmcenroe.me/2014/12/05/days-in-month-formula.html cikk fordítása ( I. rész), valamint a szerzői joggal védett bővítmény ( II. Rész.). Nem kapcsolódnak az anyag súlyosan, hanem a bemelegítés az elme, amely nem igényel többet, mint az iskolai tudás számtani és nem gyakorlati alkalmazása. Minden kellemes olvasás!

I. rész

Bevezetés

A közelmúltban, egy másik álmatlan éjszaka után gondoltam az év minden hónapjában lévő napok számának memorizálására. Ehhez van egy szám, és az a módja, hogy megfontoljuk az ujjait a csuklókon, de egyik sem, sem a másik elrendelte. Gondoltam, és hogy van-e matematikai képlet, hogy megoldja az ilyen feladatot, és anélkül, hogy megtaláltam volna, amikor kiváltottam a tanulmányt - kihívást dobtam, hogy létrehozzam.

Más szóval történő formalizálása, meg kell találni a funkciót. f.Ez az érték f (x) Minden hónapban x.az 1-től 12-ig terjedő számot képviseli. Az argumentum és a funkciók értékei:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 28 31 30 31 30 31 31 30 31 30 31

Ha van vágy, hogy megpróbálja megkezdeni a döntésemet, most itt az ideje. Ha jobban szeretné látni a kész választ, akkor nézd meg a spoiler alá.

Válasz


Az alábbiakban az én lépéseket találom meg a megoldást.

Matematikai készülék

Először is, részeg voltunk a memóriában, két létfontosságú az üzemeltető feladatainak megoldása során: egész szám és egyensúly a megosztásból.

Egész számez egy olyan operátor, amelyet számos programozási nyelven használnak, amikor két egész számot osztanak el, és magán frakcionált részből eldobják. Én ábrázolom. Például:

A megosztás fennmaradó része Ez egy olyan operátor, amely a megosztottságból származik. Sok programozási nyelven egy szimbólumot alkalmaznak % , Használom a típus tervezését, például:

Megjegyzem, hogy a divízió egyenlege egyenlő prioritással rendelkezik a divízióval.

Alapok

Tehát alkalmazzuk matematikai készülékünket az alapformátum megszerzéséhez. Normál hónap, 30 vagy 31 nap, így használhatjuk az alternatív módon 1 vagy 0, majd egyszerűen hozzáadhatjuk ezt a számot az állandó:

A táblázatot kapjuk, a helyes értékeket kiosztják:
x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 30 31 30 31 30 31 30 31 30 31 30

Jó kezdés! Már január és hónapokig már a január és a július között vannak megfelelő értékek. Február egy különleges eset, és egy kicsit később foglalkozunk vele. Július után a fennmaradó hónapokért a 0 és az 1. szerzés sorrendjét az ellenkezőjére kell cserélni.
Ehhez hozzáadhatunk a delimo 1-hez:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 30 31 30 31 30 31 30 31 30 31 30 31

Most a helyes értékek augusztus és december között, de amint azt feltételezték, a más hónapok értékei helytelenek. Lássuk, hogyan kombinálhatjuk ezeket a képleteket.

Maszkfedés

Ehhez szükség van egy részre, de - de - mivel úgy tűnt számomra, hogy nekem tűnt nekem - arra gondoltam, hogy egy másik megoldás megoldás a funkció egyik részén ugyanazon az intervallumon, a másik pedig a másik oldalon.
Úgy gondolom, hogy a legegyszerűbb módja annak, hogy egy olyan kifejezést találjunk, amely 1 az egyik alkalmazási területen és 0-ban 0-ban található. Az a módszer, amelyben a kifejezést szaporodott érvelésre van szükségünk, kizárjuk a felhasználás területén kívüli képletből, neveztem "a maszk bevezetését", ezért az ilyen viselkedés hasonló a kis maszkhoz.
Ennek a módszernek a alkalmazása, a funkciónk utolsó részében, meg kell találni az 1-es értékű kifejezést, és - mivel az argumentum értékei mindig 16-nál kisebbek - erre a célra tökéletesen alkalmas egy egész számra 8. \\ T
x. 1 2 3 4 5 6 7 8 9 10 11 12
x. ⁄ 8 ⌋ 0 0 0 0 0 0 0 1 1 1 1 1

Most ezzel a maszkkal, az 1-es divízió kifejezésével, az 1 helyett helyettesíthetjük a 0 és az 1 képlet szerinti formulát fordítva:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 30 31 30 31 30 31 31 30 31 30 31

Eureka! Ez igaz, kivéve február. Meglepetés meglepetés.

február

Minden hónapban, 30 vagy 31 napon, kivéve február 28-ot (ugrás éve, túllépje ezt a feladatot). Jelenleg a mi formula szerint 30 nap, így jó lenne kivonni egy 2-es kifejezést.
A legjobb, hogy sikerült jöjöttem fel, ami február után minden hónapban maszkot vet fel:
x. 1 2 3 4 5 6 7 8 9 10 11 12
2 mod. x. 0 0 2 2 2 2 2 2 2 2 2 2

Az alapállandó 28-as módosításával 2 a hónap hátralevő részének hozzáadásával megkapjuk a képletet:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 29 28 31 30 31 30 31 31 30 31 30 31

Sajnos január most rövidebb 2 napig. De szerencsére, hogy csak az első hónapban alkalmazzák kifejezést, nagyon egyszerű: az ellenkezője lekerekítése. Szorozzuk meg a 2-et, miután megkapjuk a végső képletet:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x) 31 28 31 30 31 30 31 31 30 31 30 31

Utólag

Itt van egy képlet az év bármely hónapjában az év bármely hónapjában, a legegyszerűbb aritmetikai felhasználásával. A következő alkalommal, amikor emlékszel, hány nap szeptemberben egyszerűen végezze el ezt az egysoros funkciót a JavaScript-en:

F funkció f (x) (Visszatérés 28 + (X + Math.Floor (x / 8))% 2 + 2% x + 2 * Math.Floor (1 / x);)

II. Rész.

Bevezetés

Az első részben egy rövid és akár enyhén elegáns képletet kaptunk, amelyek fő előnyei a matematikai készülékek egyszerűsége, az ágak hiánya és feltételes kifejezések, tömörség. A hátrányok továbbá, hogy nem fogja alkalmazni azt a projektben - magában foglalhatja a viszkózus és nem ugrás év ellenőrzésének hiányát.
Így beállítottam egy feladatot egy funkció létrehozásához f.Ez az érték f (x, y) Minden hónapban x.az 1-től 12-ig terjedő számot képviseli y., több 0, egyenlő a hónapok száma a hónapban x. évben y..
A spoiler alatt türelmetlenül kész válasz van, kérem a többit, hogy kövessen engem.

Válasz

A megosztás fennmaradó része: mod. és ⌊⌋

A könnyebb áttekinthetőség érdekében, egyetértünk abban, hogy bizonyos formulák, a szétválás üzemeltető a maradékot helyébe alacsonyabb zárójelben, ahol szükségesnek látszott számomra:

Szökőév

További naptári nap kerül bevezetésre az ugrás évre: február 29. Amint ismeretes, az ugrás év, több 4 és nem többszörös 100, vagy többszöröse 400. E nyilatkozattal azonos kifejezést írunk:

Ahhoz, hogy ezt az expressziót algebraihoz hozza, az űrlap kifejező injekciójának eredményére kell alkalmazni:

Ami lehetővé teszi az 1-et, ha a maradékot anélkül osztja el, ha a maradékkal elosztva, hogy a napok számának meghatározására szolgáló képletben használják.

Függvényként g " Használhat 1 mínusz egyenleget a megosztástól:

x. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g "(x) Végtelenség. 1 0 0 0 0 0 0 0 0 0 0 0 0 0

Könnyű észrevenni, hogy a megosztottság és az osztó növelésével a megfelelő képletet kapjuk, ha:
x. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g "(x) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Így a kifejezés írni fog:


És írja be a kifejezést:

E megközelítés alkalmazása a következő funkciót kapjuk. g (y), amelynek értéke 1, ha az év ugrás, vagy 0 az ellenkező esetben:

y. 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
g (y) 0 0 1 0 0 0 1 0 0 0 1
y. 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000
g (y) 1 0 0 0 1 0 0 0 1 0 0

Az epeári év elszigetelt volt.

Emlékeztetem arra, hogy az elfogadott megállapodás keretében a megosztottságtól való egyensúly megszerzésének üzemeltetője a mod.és ⌊⌋.

Maszkfedés

A képletben a rész egy olyan módosítás, amely 2 naptól januárig terjed. Ha eltávolítja a 2-es szorzót és a számlálón, hogy 1-et cserélje ki a 2-en, akkor ez a képlet 2 napot adjon hozzá 2 naptól januárig és 1 napra februárig, ami kulcsfontosságú a nap hozzáadásához az ugrás évben. Az egyértelműség érdekében használja a képlet közbenső értékben g (y) és minőségben y. 2000-ben (ugrás) és 2001 (nem ugrott) évek:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f (X, 2001) 30 28 31 30 31 30 31 31 30 31 30 30

Értékek minden hónapban, kivéve január, nem ugrás év igaz.

A bosszantó félreértések kijavításához adjunk hozzá január 1-jét, amelyet már ismert nekünk:


Vagy:

x. 1 2 3 4 5 6 7 8 9 10 11 12
f (x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f (X, 2001) 31 28 31 30 31 30 31 31 30 31 30 30

Következtetés

Ennek eredményeképpen már jelentősen sokkal nehezebb, de egy univerzálisabb képlet, amely szintén felhasználható az adott év egy hónapjának számának megszerzésére:

F funkció f (x, y) (visszatérés 28 + ((x + matematika (x / 8))% 2) + 2% x + matematika ((1 + (1 + (1 - (Y% 4 + 2)% (Y% 4 + 1)) * (((Y% 100 + 2)% (Y% 100 + 1) + (1 - (Y% 400 + 2)% (Y% 400 + 1))) / x ) + Math.Floor (1 / x) - Math.Floor (((1 - (Y% 4 + 2)% (Y% 4 + 1)) * ((Y% 100 + 2)% (Y% 100 + 1)) + (1 - (Y% 400 + 2)% (Y% 400 + 1))) / x);)
Példa a c # i-tone.com/fanutzra.

1 . Nem tudom, hogyan kell használni egy hasonló mnemonikus, ezért kémkedtem a tabletta az interneten.
2 . "Alapok", vagy "szabály sok kivétellel", mint a legtöbb szabály.
3 . Kezdetben a római naptárban február volt az év utolsó hónapja, így van logika, hogy rövidebb, mint mindenki más. Az év végén is logika van az év végén, így hossza változó.

UPD. egy:
Az első rész alternatív fordítása



Tetszett a cikket? Oszd meg