{"id":1354,"date":"2015-04-07T22:10:11","date_gmt":"2015-04-07T20:10:11","guid":{"rendered":"http:\/\/www.webotlet.hu\/?p=1354"},"modified":"2018-03-17T23:55:50","modified_gmt":"2018-03-17T22:55:50","slug":"java-programozas-2014-majusi-emelt-informatika-erettsegi-programozasi-feladatanak-megoldasa","status":"publish","type":"post","link":"https:\/\/www.webotlet.hu\/?p=1354","title":{"rendered":"Java programoz\u00e1s &#8211; 2014 m\u00e1jusi emelt informatika \u00e9retts\u00e9gi programoz\u00e1si feladat\u00e1nak megold\u00e1sa"},"content":{"rendered":"<p>A feladat le\u00edr\u00e1s\u00e1t, melynek a megold\u00e1s\u00e1t k\u00f6zz\u00e9teszem <a href=\"http:\/\/dari.oktatas.hu\/kir\/erettsegi\/okev_doc\/erettsegi_2014\/e_inf_14maj_fl.pdf\">innen<\/a> t\u00f6ltheted le.<\/p>\n<p>A let\u00f6lthet\u0151 t\u00f6m\u00f6r\u00edtett \u00e1llom\u00e1nyokban megtal\u00e1lod a NetBeans-ben megnyithat\u00f3 projecteket. Amennyiben Geany szerkeszt\u0151vel k\u00edv\u00e1nod megtekinteni a megold\u00e1st, akkor t\u00f6r\u00f6ld ki a forr\u00e1sok elej\u00e9r\u0151l a k\u00f6vetkez\u0151 sorokat:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npackage Webotlet_e14maj_cimek_tomb;\r\n\/\/ vagy\r\npackage Webotlet_e14maj_cimek_lista;\r\n<\/pre>\n<p>K\u00e9t megold\u00e1st is mell\u00e9kelek, az egyik <a href=\"http:\/\/www.webotlet.hu\/wp-content\/uploads\/2015\/04\/Webotlet_e14maj_cimek_tomb.7z\">t\u00f6mb\u00f6t<\/a> haszn\u00e1l az objektumok t\u00e1rol\u00e1s\u00e1ra, a m\u00e1sik <a href=\"http:\/\/www.webotlet.hu\/wp-content\/uploads\/2015\/04\/Webotlet_e14maj_cimek_lista.7z\">list\u00e1t<\/a>. A megold\u00e1sokban k\u00e9t oszt\u00e1ly tal\u00e1lhat\u00f3. A Cim oszt\u00e1ly felel\u0151s az adatt\u00e1rol\u00e1s\u00e9rt, a Webotlet_e14maj_cimek_tomb vagy lista pedig a vez\u00e9rl\u0151program, mely a forr\u00e1s beolvas\u00e1s\u00e1t, valamint a feladatok megold\u00e1s\u00e1t tartalmazza.<\/p>\n<p>A Cim oszt\u00e1ly viszont nem csak az adatt\u00e1rol\u00e1s\u00e9rt felel\u0151s. Tal\u00e1lhat\u00f3 benne k\u00e9t met\u00f3dus, <strong>bevezeto0<\/strong> \u00e9s <strong>csoport0<\/strong> n\u00e9ven, melyek statikus oszt\u00e1lymet\u00f3dusok. Ez azt jelenti, hogy az oszt\u00e1ly p\u00e9ld\u00e1nyos\u00edt\u00e1sa n\u00e9lk\u00fcl megh\u00edvhat\u00f3k a Cim oszt\u00e1ly nev\u00e9re hivatkozva. Ezzel gyakorlatilag b\u00e1rmilyen c\u00edmmel tesztelhetj\u00fck, hogy a r\u00f6vid\u00edt\u00e9sek megfelel\u0151en m\u0171k\u00f6dnek-e. Ha main()-t tartalmaz\u00f3 oszt\u00e1lyunkban semmi m\u00e1s nem szerepel, csak ezeknek a met\u00f3dusoknak a megh\u00edv\u00e1sa, akkor a Cim oszt\u00e1lyb\u00f3l nem is kell objektumot l\u00e9trehozni ahhoz, hogy tesztelhess\u00fck a r\u00f6vid\u00edt\u00e9st:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\npublic static void main( String&#x5B;] args )\r\n{\r\n  System.out.println( &quot;2001:0000:0000:00f5:0000:0000:0000:0123&quot; );\r\n  System.out.println( Cim.bevezeto0(&quot;2001:0000:0000:00f5:0000:0000:0000:0123&quot;) );\r\n  System.out.println( Cim.csoport0(&quot;2001:0000:0000:00f5:0000:0000:0000:0123&quot;) );\r\n}\r\n<\/pre>\n<p>Ilyen esetben, ha a forr\u00e1st\u00f3l f\u00fcggetlen adatokkal ugyanazokat a m\u0171veleteket kell elv\u00e9gezni, akkor c\u00e9lszer\u0171 ilyen met\u00f3dust \u00edrni abba az oszt\u00e1lyba, ami majd a forr\u00e1sb\u00f3l beolvasott adatokat tartalmazza. \u00cdgy tetsz\u0151leges adatokkal is tesztelhet\u0151 az adott met\u00f3dus, valamint a forr\u00e1sadatok feldolgoz\u00e1s\u00e1t is megoldja. L\u00e1ssuk akkor a megold\u00e1sokat:<\/p>\n<h2>Cim oszt\u00e1ly az adatt\u00e1rol\u00e1sra \u00e9s r\u00f6vid\u00edt\u00e9sre:<\/h2>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\/**\r\n *\r\n * @author http:\/\/webotlet.hu\r\n *\/\r\n\r\npackage Webotlet_e14maj_cimek_lista;\r\n\r\npublic class Cim\r\n{\r\n  private String cim;\r\n  private int tipus;\r\n  private int sorszam;\r\n  private boolean n18;\r\n\r\n  public Cim( String s, int db )\r\n  {\r\n    cim = s;\r\n    sorszam = db;\r\n\r\n    if( s.startsWith( &quot;2001:0db8&quot; ) )\r\n    {\r\n      tipus = 0;\r\n    }\r\n    else if( s.startsWith( &quot;2001:0e&quot; ) )\r\n    {\r\n      tipus = 1;\r\n    }\r\n    else\r\n    {\r\n      tipus = 2;\r\n    }\r\n    int nullak = 0;\r\n    for( int i = 0; i &lt; cim.length(); i++ )\r\n    {\r\n      if( cim.charAt(i) == '0' )\r\n      {\r\n        nullak++;\r\n      }\r\n    }\r\n    n18 = nullak &gt;= 18;\r\n  }\r\n\r\n  public String getCim()\r\n  {\r\n    return cim;\r\n  }\r\n\r\n  public int getTipus()\r\n  {\r\n    return tipus;\r\n  }\r\n\r\n  public int getSorszam()\r\n  {\r\n    return sorszam;\r\n  }\r\n\r\n  public boolean isN18()\r\n  {\r\n    return n18;\r\n  }\r\n\r\n  @Override\r\n  public String toString()\r\n  {\r\n    return &quot;Cim{&quot; + &quot;cim=&quot; + cim + &quot;, tipus=&quot; + tipus +\r\n      &quot;, sorszam=&quot; + sorszam + &quot;, n18=&quot; + n18 + '}';\r\n  }\r\n\r\n  public static String bevezeto0( String c )\r\n  {\r\n    StringBuilder sb = new StringBuilder();\r\n    String&#x5B;] tomb = c.split(&quot;:&quot;);\r\n    for( String s : tomb )\r\n    {\r\n      if( s.startsWith(&quot;000&quot;) )\r\n      {\r\n        sb.append(s.substring(3)+&quot;:&quot;);\r\n      }\r\n\r\n      else if( s.startsWith(&quot;00&quot;) )\r\n      {\r\n        sb.append(s.substring(2)+&quot;:&quot;);\r\n      }\r\n\r\n      else if( s.startsWith(&quot;0&quot;) )\r\n      {\r\n        sb.append(s.substring(1)+&quot;:&quot;);\r\n      }\r\n      else\r\n      {\r\n        sb.append(s+&quot;:&quot;);\r\n      }\r\n    }\r\n    sb.deleteCharAt(sb.length()-1);\r\n    return sb.toString();\r\n  }\r\n\r\n  public static String csoport0( String c )\r\n  {\r\n    String c2 = Cim.bevezeto0(c);\r\n\r\n    if( c2.contains(&quot;:0:0:0:0:0:0:0&quot;) )\r\n    {\r\n      c2 = c2.replaceFirst(&quot;:0:0:0:0:0:0:0&quot;, &quot;:&quot;);\r\n    }\r\n    else if( c2.contains(&quot;:0:0:0:0:0:0&quot;) )\r\n    {\r\n      c2 = c2.replaceFirst(&quot;:0:0:0:0:0:0&quot;, &quot;:&quot;);\r\n    }\r\n    else if( c2.contains(&quot;:0:0:0:0:0&quot;) )\r\n    {\r\n      c2 = c2.replaceFirst(&quot;:0:0:0:0:0&quot;, &quot;:&quot;);\r\n    }\r\n    else if( c2.contains(&quot;:0:0:0:0&quot;) )\r\n    {\r\n      c2 = c2.replaceFirst(&quot;:0:0:0:0&quot;, &quot;:&quot;);\r\n    }\r\n    else if( c2.contains(&quot;:0:0:0&quot;) )\r\n    {\r\n      c2 = c2.replaceFirst(&quot;:0:0:0&quot;, &quot;:&quot;);\r\n    }\r\n    else if( c2.contains(&quot;:0:0&quot;) )\r\n    {\r\n      c2 = c2.replaceFirst(&quot;:0:0&quot;, &quot;:&quot;);\r\n    }\r\n    else if( c2.contains(&quot;:0&quot;) )\r\n    {\r\n      c2 = c2.replaceFirst(&quot;:0&quot;, &quot;:&quot;);\r\n    }\r\n    if( c2.endsWith(&quot;:&quot;) )\r\n    {\r\n      c2 += &quot;:&quot;;\r\n    }\r\n    return c2;\r\n  }\r\n}\r\n<\/pre>\n<p>Ok\u00e9, tudom, hogy lehetne szebb \u00e9s eleg\u00e1nsabb is a megold\u00e1s a r\u00f6vid\u00edt\u00e9sekre, de most a l\u00e9nyeg, hogy ne kombin\u00e1ld t\u00fal, hiszen az \u00e9retts\u00e9gi id\u0151re megy, \u00e9s nem az optim\u00e1lis megold\u00e1st keress\u00fck. N\u00e9ha a fa\u00e9k egyszer\u0171 megold\u00e1s a leghat\u00e9konyabb.<\/p>\n<h4>A main()-t tartalmaz\u00f3 oszt\u00e1ly, mely a f\u00e1jlkezel\u00e9st \u00e9s a feladatokat tartalmazza:<\/h4>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\/**\r\n *\r\n * @author http:\/\/webotlet.hu\r\n *\/\r\n\r\npackage Webotlet_e14maj_cimek_tomb;\r\n\r\nimport java.io.*;\r\nimport java.util.Scanner;\r\n\r\npublic class Webotlet_e14maj_cimek_tomb\r\n{\r\n\r\n  public static void main( String&#x5B;] args )\r\n  {\r\n    String sor;\r\n    RandomAccessFile raf;\r\n    int db;\r\n    Cim&#x5B;] cimek;\r\n    try\r\n    {\r\n\/\/ 1. feladat\r\n      raf = new RandomAccessFile(&quot;ip.txt&quot;,&quot;r&quot;);\r\n      db = 0;\r\n      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )\r\n      {\r\n        db++;\r\n      }\r\n      cimek = new Cim&#x5B;db];\r\n      db = 0;\r\n      raf.seek(0);\r\n      for( sor = raf.readLine(); sor != null; sor = raf.readLine() )\r\n      {\r\n        cimek&#x5B;db++] = new Cim(sor, db);\r\n      }\r\n      raf.close();\r\n\r\n\/\/ 2. feladat\r\n      System.out.println(&quot;\\n2. feladat&quot;);\r\n      System.out.println(db+&quot; sor van az allomanyban.&quot;);\r\n\r\n\/\/ 3. feladat\r\n      System.out.println(&quot;\\n3. feladat&quot;);\r\n\r\n      int min = 0;\r\n      for( int i = 1; i &lt; cimek.length; i++ )\r\n      {\r\n        if( cimek&#x5B;i].getCim().compareTo(cimek&#x5B;min].getCim() ) &lt; 0 )\r\n        {\r\n          min = i;\r\n        }\r\n      }\r\n      System.out.println( &quot;Az allomanyban szereplo legalacsonyabb cim:\\n&quot;+\r\n        cimek&#x5B;min].getCim() );\r\n\r\n\/\/ 4. feladat\r\n      System.out.println(&quot;\\n4. feladat&quot;);\r\n      int&#x5B;] tipusDb = new int&#x5B;3];\r\n\r\n      for( Cim c : cimek )\r\n      {\r\n        tipusDb&#x5B; c.getTipus() ]++;\r\n      }\r\n\r\n      System.out.println(&quot;Dokumentacios cim: &quot;+tipusDb&#x5B;0]+&quot; darab&quot;);\r\n      System.out.println(&quot;Globalis egyedi cim: &quot;+tipusDb&#x5B;1]+&quot; darab&quot;);\r\n      System.out.println(&quot;Helyi egyedi cim: &quot;+tipusDb&#x5B;2]+&quot; darab&quot;);\r\n\r\n\/\/ 5. feladat\r\n      RandomAccessFile ki = new RandomAccessFile(&quot;sok.txt&quot;,&quot;rw&quot;);\r\n\r\n\/\/ ha esetleg l\u00e9tezne a f\u00e1jl, t\u00f6r\u00f6lj\u00fck a tartalm\u00e1t\r\n      ki.setLength(0);\r\n      for( Cim c : cimek )\r\n      {\r\n        if( c.isN18() )\r\n        {\r\n          ki.writeBytes(c.getSorszam()+&quot; &quot;+c.getCim()+&quot;\\n&quot;);\r\n        }\r\n      }\r\n\r\n\/\/ 6. feladat\r\n      System.out.println(&quot;\\n6. feladat&quot;);\r\n      Scanner sc = new Scanner(System.in);\r\n      System.out.print(&quot;Adj meg egy sorszamot: &quot;);\r\n      int rcim = sc.nextInt()-1;\r\n\r\n      System.out.println(cimek&#x5B;rcim].getCim() );\r\n      System.out.println(Cim.bevezeto0( cimek&#x5B;rcim].getCim() ) );\r\n\r\n\/\/ 7. feladat\r\n      System.out.println(&quot;\\n7. feladat&quot;);\r\n      System.out.println(Cim.csoport0( cimek&#x5B;rcim].getCim() ) );\r\n    }\r\n\r\n    catch( IOException e )\r\n    {\r\n      System.err.println(&quot;HIBA&quot;);\r\n    }\r\n  }\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>A feladat le\u00edr\u00e1s\u00e1t, melynek a megold\u00e1s\u00e1t k\u00f6zz\u00e9teszem innen t\u00f6ltheted le. A let\u00f6lthet\u0151 t\u00f6m\u00f6r\u00edtett \u00e1llom\u00e1nyokban megtal\u00e1lod a NetBeans-ben megnyithat\u00f3 projecteket. Amennyiben Geany szerkeszt\u0151vel k\u00edv\u00e1nod megtekinteni a megold\u00e1st, akkor t\u00f6r\u00f6ld ki a forr\u00e1sok elej\u00e9r\u0151l a k\u00f6vetkez\u0151 sorokat: package Webotlet_e14maj_cimek_tomb; \/\/ vagy package <a class=\"more-link\" href=\"https:\/\/www.webotlet.hu\/?p=1354\">Tov\u00e1bb <span class=\"screen-reader-text\">  Java programoz\u00e1s &#8211; 2014 m\u00e1jusi emelt informatika \u00e9retts\u00e9gi programoz\u00e1si feladat\u00e1nak megold\u00e1sa<\/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":[27,107,109,22,86,20,143],"class_list":["post-1354","post","type-post","status-publish","format-standard","hentry","category-java-emelt-erettsegi-feladatok","tag-alap-algoritmusok","tag-emelt-erettsegi","tag-emelt-informatika-erettsegi","tag-fajlkezeles","tag-java","tag-objektum","tag-programozas"],"_links":{"self":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1354","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=1354"}],"version-history":[{"count":7,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1354\/revisions"}],"predecessor-version":[{"id":2407,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=\/wp\/v2\/posts\/1354\/revisions\/2407"}],"wp:attachment":[{"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webotlet.hu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}