{"id":1467,"date":"2015-05-19T09:09:04","date_gmt":"2015-05-19T07:09:04","guid":{"rendered":"http:\/\/www.webotlet.hu\/?p=1467"},"modified":"2015-05-19T09:09:04","modified_gmt":"2015-05-19T07:09:04","slug":"java-kiegeszito-lecke-idokulonbseg","status":"publish","type":"post","link":"https:\/\/www.webotlet.hu\/?p=1467","title":{"rendered":"Java kieg\u00e9sz\u00edt\u0151 lecke &#8211; Id\u0151k\u00fcl\u00f6nbs\u00e9g"},"content":{"rendered":"<h3><strong>Csak akkor olvass tov\u00e1bb, ha az <a href=\"http:\/\/www.webotlet.hu\/?p=1456\">Id\u0151k\u00fcl\u00f6nbs\u00e9g<\/a> feladatot megoldottad, vagy nem siker\u00fclt megoldani.<\/strong><\/h3>\n<p>Az alap feladatot a fenti linken megtal\u00e1lod, az ott bemeneti adatokat fogom haszn\u00e1lni. A feladat az volt, hogy hat\u00e1rozzuk meg, k\u00e9t id\u0151pont k\u00f6z\u00f6tt eltelt id\u0151t. A forr\u00e1sadatokat tekintve t\u00f6bb helyzet is el\u0151fordulhat az alap adatokn\u00e1l.<\/p>\n<h4>K\u00fcl\u00f6nf\u00e9le esetek<\/h4>\n<p>A v\u00e9g id\u0151pont minden r\u00e9sz adata nagyobb vagy egyenl\u0151 a kezdeti id\u0151pont megfelel\u0151 adataival:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString ido1 = &quot;7:35:40&quot;;\r\nString ido2 = &quot;8:35:55&quot;;\r\n<\/pre>\n<p>Csak a k\u00e9s\u0151bbi id\u0151pont m\u00e1sodperc adata a kisebb:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString ido1 = &quot;7:35:40&quot;;\r\nString ido2 = &quot;7:45:25&quot;;\r\n<\/pre>\n<p>Csak a k\u00e9s\u0151bbi id\u0151pont perc adata a kisebb:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString ido1 = &quot;7:35:40&quot;;\r\nString ido2 = &quot;8:25:50&quot;;\r\n<\/pre>\n<p>A k\u00e9s\u0151bbin\u00e9l t\u00f6bb adat is kisebb:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString ido1 = &quot;7:35:40&quot;;\r\nString ido2 = &quot;9:30:30&quot;;\r\n<\/pre>\n<p>Az adatokat mindegyik esetben fel kell darabolni, az \u00e1talak\u00edt\u00e1st a feladat megold\u00e1s\u00e1ban is l\u00e1thattad, a l\u00e9nyeg, hogy legyenek \u00f3ra-perc-m\u00e1sodperc bont\u00e1sban a megfelel\u0151 adatok. Az \u00f3ra1, perc1, mperc1 a kezdeti id\u0151pont megfelel\u0151 adatait jelenti, a v\u00e9g id\u0151pontot ehhez hasonl\u00f3an 2-es sorsz\u00e1mmal t\u00e1rolom.<\/p>\n<p>Az els\u0151 esetben nincs gond, hiszen a megfelel\u0151 adatokat egym\u00e1sb\u00f3l kivonva megkapjuk a k\u00edv\u00e1nt eredm\u00e9nyt. Abban megegyezhet\u00fcnk, hogy az id\u0151k\u00fcl\u00f6nbs\u00e9get m\u00e1sodpercben akarjuk megkapni, mert az k\u00f6nnyen \u00e1tsz\u00e1m\u00edthat\u00f3 b\u00e1rmelyik m\u00e1sikba:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString ido1 = &quot;7:35:40&quot;;\r\nString ido2 = &quot;8:35:55&quot;;\r\nint kul = (ora2-ora1)*3600 + (perc2-perc1)*60 + mperc2-mperc1;\r\n<\/pre>\n<p>A k\u00fcl\u00f6nbs\u00e9g 3615, ami hib\u00e1tlan. De mi van akkor, amikor mondjuk a m\u00e1sodpercn\u00e9l a k\u00e9s\u0151bbi a kisebb? A m\u00e1sodik esetben pont ilyet l\u00e1tunk. Akkor gondolhatn\u00e1d, hogy mivel a kisebb\u0151l vonod ki a nagyobbat, ez\u00e9rt a negat\u00edv sz\u00e1m gondot fog jelenteni. L\u00e1ssuk, \u00edgy van-e!<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString ido1 = &quot;7:35:40&quot;;\r\nString ido2 = &quot;7:45:25&quot;;\r\nint kul = (ora2-ora1)*3600 + (perc2-perc1)*60 + mperc2-mperc1;\r\n<\/pre>\n<p>Az eredm\u00e9ny itt 585. Sz\u00e1moljunk akkor, hogy helyes-e. Az \u00f3r\u00e1k egyeznek, azzal nincs teend\u0151. A percek k\u00fcl\u00f6nbs\u00e9ge 10, vagyis 600 m\u00e1sodperc, de a m\u00e1sodpercekn\u00e9l a m\u00e1sodik a kisebb, vagyis a k\u00fcl\u00f6nbs\u00e9g\u00fck -15, ami helyes, mert ez korrig\u00e1lja azt, hogy a percek k\u00fcl\u00f6nbs\u00e9g\u00e9n\u00e9l egy picit t\u00f6bbel sz\u00e1moltunk. Az eredm\u00e9ny fejben is ellen\u0151rizhet\u0151, hiszen a 10 percb\u0151l 15 m\u00e1sodperc hi\u00e1nyzik, az 600-15.<\/p>\n<p>M\u00e1sodpercek rendben, mi van, ha a percekn\u00e9l kisebb a k\u00e9s\u0151bbi id\u0151pont adata?<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString ido1 = &quot;7:35:40&quot;;\r\nString ido2 = &quot;8:25:50&quot;;\r\nint kul = (ora2-ora1)*3600 + (perc2-perc1)*60 + mperc2-mperc1;\r\n<\/pre>\n<p>A k\u00fcl\u00f6nbs\u00e9g ebben az esetben 3010 m\u00e1sodperc. Ez pontosan mi is? L\u00e1thatod, hogy az \u00f3r\u00e1k k\u00fcl\u00f6nbs\u00e9ge 1, vagyis 3600 m\u00e1sodperc lenne. De ebb\u0151l hi\u00e1nyzik 10 perc, vagyis -600 m\u00e1sodperc, akkor 3000-n\u00e1l j\u00e1runk. A m\u00e1sodpercek k\u00fcl\u00f6nbs\u00e9ge pedig 10, vagyis val\u00f3ban 3010 az eredm\u00e9ny. Az \u00f3r\u00e1k k\u00fcl\u00f6nbs\u00e9g\u00e9n\u00e9l fenn\u00e1ll\u00f3 hibalehet\u0151s\u00e9get (nem eg\u00e9sz \u00f3ra) korrig\u00e1lta a percek negat\u00edv eredm\u00e9nye. Vagyis a k\u00e9plet most is helyes.<\/p>\n<p>\u00c9s ha az \u00f3r\u00e1n k\u00edv\u00fcl mindig a percek \u00e9s m\u00e1sodpercek adatai is kisebbek a m\u00e1sodik id\u0151pontn\u00e1l?<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString ido1 = &quot;7:35:40&quot;;\r\nString ido2 = &quot;9:30:30&quot;;\r\nint kul = (ora2-ora1)*3600 + (perc2-perc1)*60 + mperc2-mperc1;\r\n<\/pre>\n<p>Az eredm\u00e9ny 6890, vezess\u00fck is le. Az \u00f3r\u00e1k k\u00fcl\u00f6nbs\u00e9ge kett\u0151, vagyis 7200 m\u00e1sodpercr\u0151l indulunk. A k\u00e9t \u00f3r\u00e1b\u00f3l viszont hi\u00e1nyzik 5 perc, ami -300 m\u00e1sodperc, akkor 6900-n\u00e1l j\u00e1runk. A m\u00e1sodpercekb\u0151l pedig 10 hi\u00e1nyzik, vagyis -10 m\u00e1sodperc, azaz, 6890.<\/p>\n<h4>Univerz\u00e1lis megold\u00e1s<\/h4>\n<p>L\u00e1thatod, hogy b\u00e1rmilyen esetr\u0151l is legyen sz\u00f3, az id\u0151k\u00fcl\u00f6nbs\u00e9geket minden esetben azonos m\u00f3don, egyszer\u0171en megkaphatod. A megold\u00e1s a megfelel\u0151 id\u0151pontok azonos adatainak k\u00fcl\u00f6nbs\u00e9g\u00e9b\u0151l \u00e1ll \u00f6ssze, melyeket a m\u00e9rt\u00e9kegys\u00e9geknek megfelel\u0151 szorz\u00e1ssal tetsz\u0151leges id\u0151m\u00e9rt\u00e9kben kaphatunk meg. A legegyszer\u0171bb tal\u00e1n m\u00e1sodpercekben megkapni, azzal eg\u00e9sz k\u00f6nny\u0171 sz\u00e1molni. A megold\u00e1s teh\u00e1t:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nkulonbseg = (ora2-ora1)*3600 + (perc2-perc1)*60 + mperc2-mperc1;\r\n<\/pre>\n<h4>M\u00e1sodpercek \u00e1tsz\u00e1m\u00edt\u00e1sa &#8220;rendes&#8221; id\u0151m\u00e9rt\u00e9kbe<\/h4>\n<p>Az utols\u00f3 feladat eredm\u00e9ny\u00e9t adjuk meg \u00f3ra:perc:m\u00e1sodperc form\u00e1tumban. A kulcs a marad\u00e9kos oszt\u00e1s:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nString ido1 = &quot;7:35:40&quot;;\r\nString ido2 = &quot;9:30:30&quot;;\r\nint kulonbseg = (ora2-ora1)*3600 + (perc2-perc1)*60 + mperc2-mperc1;\r\nint ora, perc, mperc, maradek;\r\nora = kulonbseg \/ 3600;\r\nmaradek = kulonbseg % 3600;\r\nperc = maradek \/ 60;\r\nmaradek = maradek % 60;\r\nmperc = maradek;\r\nSystem.out.println( ora+&quot;:&quot;+perc+&quot;:&quot;+mperc );\r\n<\/pre>\n<p>Az\u00e9rt j\u00f3 ezt megjegyezni, mert t\u00f6bb emelt szint\u0171 \u00e9retts\u00e9gi feladatban is el\u0151fordult hasonl\u00f3 r\u00e9sz feladat. Term\u00e9szetesen ez azt is kezelni tudja, amikor az id\u0151pontok m\u00e1s-m\u00e1s naphoz tartoznak, de ott m\u00e1r a h\u00f3napfordul\u00f3kra is figyelni kell, amely kezel\u00e9sekor m\u00e1r c\u00e9lszer\u0171 d\u00e1tumoszt\u00e1lyokat is haszn\u00e1lni. Ha adott h\u00f3napon bel\u00fcl maradunk, akkor az el\u0151z\u0151ekben ismertetett megold\u00e1st kell csak kib\u0151v\u00edteni a napokkal.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Csak akkor olvass tov\u00e1bb, ha az Id\u0151k\u00fcl\u00f6nbs\u00e9g feladatot megoldottad, vagy nem siker\u00fclt megoldani. Az alap feladatot a fenti linken megtal\u00e1lod, az ott bemeneti adatokat fogom haszn\u00e1lni. A feladat az volt, hogy hat\u00e1rozzuk meg, k\u00e9t id\u0151pont k\u00f6z\u00f6tt eltelt id\u0151t. A forr\u00e1sadatokat <a class=\"more-link\" href=\"https:\/\/www.webotlet.hu\/?p=1467\">Tov\u00e1bb <span class=\"screen-reader-text\">  Java kieg\u00e9sz\u00edt\u0151 lecke &#8211; Id\u0151k\u00fcl\u00f6nbs\u00e9g<\/span><span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101],"tags":[114,118,86,117,115,116,143],"class_list":["post-1467","post","type-post","status-publish","format-standard","hentry","category-java-kiegeszito-leckek","tag-ido","tag-idokulonbseg","tag-java","tag-masodperc","tag-ora","tag-perc","tag-programozas"],"_links":{"self":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1467"}],"version-history":[{"count":5,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1467\/revisions"}],"predecessor-version":[{"id":1472,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1467\/revisions\/1472"}],"wp:attachment":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}