{"id":2814,"date":"2019-11-06T09:15:25","date_gmt":"2019-11-06T08:15:25","guid":{"rendered":"http:\/\/www.webotlet.hu\/?p=2814"},"modified":"2019-11-06T09:19:53","modified_gmt":"2019-11-06T08:19:53","slug":"java-programozas-2006-oktoberi-emelt-informatika-erettsegi-programozasi-feladatanak-megoldasa-1-verzio","status":"publish","type":"post","link":"https:\/\/www.webotlet.hu\/?p=2814","title":{"rendered":"Java programoz\u00e1s &#8211; 2006 okt\u00f3beri emelt informatika \u00e9retts\u00e9gi programoz\u00e1si feladat\u00e1nak megold\u00e1sa (1. verzi\u00f3)"},"content":{"rendered":"<p>A feladat le\u00edr\u00e1s\u00e1t, melynek a megold\u00e1s\u00e1t k\u00f6zz\u00e9teszem <a href=\"http:\/\/www.webotlet.hu\/wp-content\/uploads\/2019\/11\/e_info_06okt_zenei_adok.pdf\">innen<\/a> t\u00f6ltheted le. Ezzel a feladattal viszont t\u00f6bb bajom is van.<\/p>\n<p>Kezdj\u00fck az elej\u00e9n. A feladat a kiindul\u00f3 inform\u00e1ci\u00f3k k\u00f6z\u00f6tt a k\u00f6vetkez\u0151t mondja: &#8220;Az \u00e1llom\u00e1nyban minden zenesz\u00e1m legfeljebb egyszer szerepel.&#8221; A helyzet az, hogy m\u00e9g v\u00e9letlen\u00fcl sem. 3 olyan zenesz\u00e1m is van, amely 2-szer is szerepel a forr\u00e1sban. Ezek k\u00f6z\u00fcl 2 r\u00e1ad\u00e1sul ugyanazon a r\u00e1di\u00f3n. Ezzel nyilv\u00e1n borulhat az \u00f6sszes olyan feladat, ami arra \u00e9p\u00edt, hogy meg kell keresni egy konkr\u00e9t zen\u00e9t.<\/p>\n<p>Fontosnak tartom megjegyezni, hogy a 4-es feladatot kifejezetten rossznak tartom! A feladat szerint felt\u00e9telezheted, hogy a m\u00e1sik k\u00e9t ad\u00f3n van ad\u00e1s, amikor valahol az Omega:Legenda sz\u00e1ma megsz\u00f3lal. Ha a megold\u00e1s sor\u00e1n figyelembe veszed a zen\u00e9k hossz\u00e1t (ahogy az norm\u00e1lis esetben elv\u00e1rhat\u00f3 lenne), akkor azt l\u00e1thatod, hogy az egyik ad\u00f3n m\u00e1r nincs ad\u00e1s. Ekkor term\u00e9szetesen elkezded keresni a hib\u00e1t, hogy mit rontott\u00e1l el. A helyzet az, hogy semmit, mert a forr\u00e1s szerint az egyik ad\u00f3n m\u00e1r t\u00e9nyleg nem sz\u00f3l semmi! Pedig az elej\u00e9n azt mondt\u00e1k, hogy ez felt\u00e9telezhet\u0151. Ezzel a hibakeres\u00e9ssel viszont sok id\u0151d elmehet feleslegesen, hiszen maga a feladat rossz!<\/p>\n<p>Az OH \u00e1ltal k\u00f6zreadott Pascal forr\u00e1s\u00fa megold\u00e1s teljesen figyelmen k\u00edv\u00fcl hagyja a zenesz\u00e1mok hossz\u00e1t, amit egy\u00e9bk\u00e9nt t\u00f6bb feladatban haszn\u00e1lni is kell. A k\u00f6zponti megold\u00e1s csak annyit tesz, hogy megn\u00e9zi, mi van a forr\u00e1sban a m\u00e1sik k\u00e9t ad\u00f3n az Omega:Legenda sz\u00e1ma el\u0151tt. Ez teljesen \u00e9rtelmetlen. Mivel a forr\u00e1sban csak az azonos r\u00e1di\u00f3n sz\u00f3l\u00f3 zen\u00e9knek megfelel\u0151 a sorrendje, sim\u00e1n el\u0151fordulhat, hogy a m\u00e1sik r\u00e1di\u00f3n az Omega el\u0151tti sz\u00e1m b\u0151ven az Omega kezdete el\u0151tt ker\u00fclt lej\u00e1tsz\u00e1sra, hiszen az id\u0151t teljesen figyelmen k\u00edv\u00fcl hagyt\u00e1k.<\/p>\n<p>M\u00e1s megold\u00e1sok \u00e9s el\u00e9rhet\u0151ek online, nem n\u00e9ztem v\u00e9gig mindet. Az itt k\u00f6zreadott megold\u00e1sok pontosan figyelembe veszik hogy az adott zen\u00e9k mikor sz\u00f3lnak. Ez a megold\u00e1s t\u00f6mbbel dolgozik.<\/p>\n<p>Adatt\u00e1rol\u00f3 oszt\u00e1ly:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\/**\r\n *\r\n * @author https:\/\/webotlet.hu\r\n *\/\r\npackage webotlet_06okt_zenei_adok_java;\r\n\r\npublic class Zene\r\n{\r\n  private int radio;\r\n  private int perc;\r\n  private int mperc;\r\n  private String azonosito;\r\n  private String eloado;\r\n  private String cim;\r\n  \r\n  \r\n  private int hosszMp;\r\n  private int kezd;\r\n  private int vege;\r\n  \r\n  public Zene( String&#x5B;] tomb )\r\n  {\r\n    radio = Integer.parseInt(tomb&#x5B;0]);\r\n    perc = Integer.parseInt(tomb&#x5B;1]);\r\n    mperc = Integer.parseInt(tomb&#x5B;2]);\r\n    azonosito = tomb&#x5B;3];\r\n    String&#x5B;] tmp = azonosito.split(&quot;:&quot;);\r\n    eloado = tmp&#x5B;0];\r\n    cim = tmp&#x5B;1];\r\n    \r\n    hosszMp = perc * 60 + mperc;\r\n  }\r\n\r\n  public int getRadio()\r\n  {\r\n    return radio;\r\n  }\r\n\r\n  public int getPerc()\r\n  {\r\n    return perc;\r\n  }\r\n\r\n  public int getMperc()\r\n  {\r\n    return mperc;\r\n  }\r\n\r\n  public String getAzonosito()\r\n  {\r\n    return azonosito;\r\n  }\r\n  \r\n  public String getEloado()\r\n  {\r\n    return eloado;\r\n  }\r\n\r\n  public String getCim()\r\n  {\r\n    return cim;\r\n  }\r\n\r\n  public int getHosszMp()\r\n  {\r\n    return hosszMp;\r\n  }\r\n\r\n  public int getKezd()\r\n  {\r\n    return kezd;\r\n  }\r\n\r\n  public int getVege()\r\n  {\r\n    return vege;\r\n  }\r\n  \r\n  public void setKezd(int kezd)\r\n  {\r\n    this.kezd = kezd;\r\n    this.vege = kezd + hosszMp;\r\n  }\r\n\r\n  @Override\r\n  public String toString()\r\n  {\r\n    return &quot;Zene{&quot; + &quot;radio=&quot; + radio + &quot;, perc=&quot; + perc\r\n      +&quot;, mperc=&quot; + mperc + &quot;, azonosito=&quot; + azonosito + &quot;, eloado=&quot;\r\n      + eloado + &quot;, cim=&quot; + cim + &quot;, hosszMp=&quot; + hosszMp\r\n      + &quot;, kezd=&quot; + kezd + &quot;, vege=&quot; + vege + '}';\r\n  }\r\n}\r\n<\/pre>\n<p>A feladat megold\u00e1sa:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\/**\r\n *\r\n * @author https:\/\/webotlet.hu\r\n *\/\r\npackage webotlet_06okt_zenei_adok_java;\r\n\r\nimport java.io.IOException;\r\nimport java.io.RandomAccessFile;\r\nimport java.util.Scanner;\r\n\r\npublic class Webotlet_06okt_zenei_adok_java\r\n{\r\n  public static void main(String&#x5B;] args)\r\n  {\r\n    \/\/ 1. feladat\r\n    Zene&#x5B;] zenek = null;\r\n    \r\n    try\r\n    {\r\n      RandomAccessFile raf = new RandomAccessFile(&quot;musor.txt&quot;, &quot;r&quot;);\r\n      \/\/ a trim-re az\u00e1rt van sz\u00fcks\u00e9g, mert a forr\u00e1sban van\r\n      \/\/ egy sz\u00f3k\u00f6z a sz\u00e1m ut\u00e1n, amit nem tud kezelni\r\n      \/\/ az Integer.parseInt() met\u00f3dus, a trim() ezt v\u00e1gja le\r\n      zenek = new Zene&#x5B;Integer.parseInt(raf.readLine().trim())];\r\n      String sor;\r\n      \r\n      int hely = 0;\r\n      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )\r\n      {\r\n        zenek&#x5B;hely] = new Zene(sor.split(&quot; &quot;, 4));\r\n        hely++;\r\n      }\r\n      raf.close();\r\n    }\r\n    catch( IOException e )\r\n    {\r\n      System.out.println(&quot;HIBA&quot;);\r\n    }\r\n\r\n    \r\n    \/\/ 2. feladat\r\n    System.out.println(&quot;2. feladat&quot;);\r\n    \r\n    int&#x5B;] dbRadiok = new int&#x5B;4];\r\n    \r\n    for( int i = 0; i &lt; zenek.length; i++ )\r\n    {\r\n      dbRadiok&#x5B;zenek&#x5B;i].getRadio()]++;\r\n    }\r\n    \r\n    for( int i = 1; i &lt; dbRadiok.length; i++ )\r\n    {\r\n      System.out.println(i + &quot;. radio: &quot; + dbRadiok&#x5B;i]);\r\n    }\r\n    \r\n    \/\/ 3. feladat\r\n    System.out.println(&quot;3. feladat&quot;);\r\n    \r\n    int elsoEric = 0;\r\n    int utolsoEric = 0;\r\n    \r\n    for( int i = 0; i &lt; zenek.length; i++ )\r\n    {\r\n      if( zenek&#x5B;i].getRadio() == 1 &amp;&amp; zenek&#x5B;i].getEloado().equals(&quot;Eric Clapton&quot;))\r\n      {\r\n        elsoEric = i;\r\n        break;\r\n      }\r\n    }\r\n\r\n    for( int i = zenek.length - 1; i &gt;= 0; i-- )\r\n    {\r\n      if( zenek&#x5B;i].getRadio() == 1 &amp;&amp; zenek&#x5B;i].getEloado().equals(&quot;Eric Clapton&quot;))\r\n      {\r\n        utolsoEric = i;\r\n        break;\r\n      }\r\n    }\r\n    \r\n    int ido = 0;\r\n    \r\n    for( int i = elsoEric; i &lt;= utolsoEric; i++ )\r\n    {\r\n      if( zenek&#x5B;i].getRadio() == 1 )\r\n      {\r\n        ido += zenek&#x5B;i].getHosszMp();\r\n      }\r\n    }\r\n\r\n    System.out.println(idoFormaz(ido));\r\n    \r\n    \/\/ 4. feladat\r\n    System.out.println(&quot;4. feladat&quot;);\r\n    \r\n    int radio1 = 0;\r\n    int radio2 = 0;\r\n    int radio3 = 0;\r\n    for( int i = 0; i &lt; zenek.length; i++ )\r\n    {\r\n      if( zenek&#x5B;i].getRadio() == 1 )\r\n      {\r\n        zenek&#x5B;i].setKezd(radio1);\r\n        radio1 += zenek&#x5B;i].getHosszMp();\r\n      }\r\n      else if( zenek&#x5B;i].getRadio() == 2 )\r\n      {\r\n        zenek&#x5B;i].setKezd(radio2);\r\n        radio2 += zenek&#x5B;i].getHosszMp();\r\n      }\r\n      else\r\n      {\r\n        zenek&#x5B;i].setKezd(radio3);\r\n        radio3 += zenek&#x5B;i].getHosszMp();\r\n      }\r\n    }\r\n    \r\n    \r\n    int omega = 0;\r\n    for( int i = 0; i &lt; zenek.length; i++ )\r\n    {\r\n      if( zenek&#x5B;i].getEloado().equals(&quot;Omega&quot;)\r\n        &amp;&amp; zenek&#x5B;i].getCim().equals(&quot;Legenda&quot;) )\r\n      {\r\n        omega = i;\r\n        break;\r\n      }\r\n    }\r\n\r\n    System.out.println(&quot;Az Omega:Legenda zene a &quot;\r\n      + zenek&#x5B;omega].getRadio() + &quot;. radion szolt.&quot;);    \r\n    \r\n    for( int i = 0; i &lt; zenek.length; i++ )\r\n    {\r\n      if( zenek&#x5B;i].getRadio() != zenek&#x5B;omega].getRadio() )\r\n      {\r\n        if( zenek&#x5B;omega].getKezd() &gt;= zenek&#x5B;i].getKezd() \r\n          &amp;&amp; zenek&#x5B;omega].getKezd() &lt;= zenek&#x5B;i].getVege() )\r\n        {\r\n          System.out.println(zenek&#x5B;i].getRadio() + &quot;: &quot; \r\n            + zenek&#x5B;i].getEloado() + &quot;-&quot; + zenek&#x5B;i].getCim());\r\n        }\r\n      }\r\n    }\r\n    \r\n    \/\/ 5. feladat\r\n    System.out.println(&quot;5. feladat&quot;);\r\n    \r\n    Scanner sc = new Scanner(System.in);\r\n    System.out.println(&quot;Add meg a felismert karaktereket!&quot;);\r\n    String mintasor = sc.nextLine().toLowerCase();\r\n    \r\n    char&#x5B;] minta = mintasor.toCharArray();\r\n    try\r\n    {\r\n      RandomAccessFile ki =new RandomAccessFile(&quot;keres.txt&quot;, &quot;rw&quot;);\r\n      ki.setLength(0);\r\n      ki.writeBytes(mintasor + &quot;\\n&quot;);\r\n      for( int i = 0; i &lt; zenek.length; i++ )\r\n      {\r\n        int talalt = 0;\r\n        String dal = zenek&#x5B;i].getAzonosito().toLowerCase();\r\n        for( int j = 0; j &lt; dal.length(); j++ )\r\n        {\r\n          if( talalt &lt; minta.length &amp;&amp; dal.charAt(j) == minta&#x5B;talalt])\r\n          {\r\n            talalt++;\r\n          }\r\n        }\r\n\r\n        if( talalt == minta.length )\r\n        {\r\n          ki.writeBytes(zenek&#x5B;i].getAzonosito()+&quot;\\n&quot;);\r\n        }\r\n      }\r\n    }\r\n    catch( IOException e )\r\n    {\r\n      System.out.println(&quot;HIBA&quot;);\r\n    }\r\n\r\n    \/\/ 6. feladat\r\n    System.out.println(&quot;6. feladat&quot;);\r\n    int musorido = 0;\r\n    for( int i = 0; i &lt; zenek.length; i++ )\r\n    {\r\n      if( zenek&#x5B;i].getRadio() == 1 )\r\n      {\r\n        if( 3600 - (musorido % 3600) &lt; (60 + zenek&#x5B;i].getHosszMp()) )\r\n        {\r\n          musorido += 3600 - (musorido % 3600);\r\n          musorido += 180;\r\n        }\r\n        musorido += 60 + zenek&#x5B;i].getHosszMp();\r\n      }\r\n    }\r\n    \r\n    System.out.println(idoFormaz(musorido));\r\n  }\r\n  \r\n  public static String idoFormaz(int hossz)\r\n  {\r\n    int ora;\r\n    int perc;\r\n    int mperc;\r\n    \r\n    ora = hossz \/ 3600;\r\n    hossz = hossz % 3600;\r\n    perc = hossz \/ 60;\r\n    mperc = hossz % 60;\r\n    return ora + &quot;:&quot; + perc + &quot;:&quot; + mperc;\r\n  }\r\n}\r\n<\/pre>\n<p>Ha hib\u00e1t tal\u00e1lsz benne, k\u00e9rlek jelezd!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A feladat le\u00edr\u00e1s\u00e1t, melynek a megold\u00e1s\u00e1t k\u00f6zz\u00e9teszem innen t\u00f6ltheted le. Ezzel a feladattal viszont t\u00f6bb bajom is van. Kezdj\u00fck az elej\u00e9n. A feladat a kiindul\u00f3 inform\u00e1ci\u00f3k k\u00f6z\u00f6tt a k\u00f6vetkez\u0151t mondja: &#8220;Az \u00e1llom\u00e1nyban minden zenesz\u00e1m legfeljebb egyszer szerepel.&#8221; A helyzet az, <a class=\"more-link\" href=\"https:\/\/www.webotlet.hu\/?p=2814\">Tov\u00e1bb <span class=\"screen-reader-text\">  Java programoz\u00e1s &#8211; 2006 okt\u00f3beri emelt informatika \u00e9retts\u00e9gi programoz\u00e1si feladat\u00e1nak megold\u00e1sa (1. verzi\u00f3)<\/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":[106],"tags":[107,109,22,86,144,25],"class_list":["post-2814","post","type-post","status-publish","format-standard","hentry","category-java-emelt-erettsegi-feladatok","tag-emelt-erettsegi","tag-emelt-informatika-erettsegi","tag-fajlkezeles","tag-java","tag-java_programozas","tag-randomaccessfile"],"_links":{"self":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/2814","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=2814"}],"version-history":[{"count":2,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/2814\/revisions"}],"predecessor-version":[{"id":2824,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/2814\/revisions\/2824"}],"wp:attachment":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}