Programozó versenyek

Magas szintű programozási nyelvek 2, 2014. november 10., H18 ZH

2014. november 10. 18:10 – 2014. november 10. 19:50

Több hónapos feladat

Töltse le az alábbi programkódot egy Teszt.java nevű állományba, majd egészítse ki az instrukcióknak megfelelően:

Teszt.java

  1. import java.util.Arrays;
  2. import java.util.ArrayList;
  3. import java.io.BufferedReader;
  4. import java.io.InputStreamReader;
  5. import java.io.IOException;
  6. class Naptár {
  7.     private final String[] hónapok;
  8.     @Override
  9.     public String toString() {
  10.         return Arrays.toString(hónapok).replaceAll("[\\[\\]]", "");
  11.     }
  12. }
  13. public class Teszt {
  14.      public static void main(String[] args) {
  15.         ArrayList<Naptár> gal = new ArrayList<>();
  16.         try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
  17.             String sor = null;
  18.             while ((sor = br.readLine()) != null) {
  19.                 String[] st = sor.split(";");
  20.                 gal.add(new Naptár(st));
  21.             }
  22.         } catch (IOException ioe) {
  23.             ioe.printStackTrace();
  24.         }
  25.         Naptár[] nt = gal.toArray(new Naptár[0]);
  26.         for (Naptár f : nt) {
  27.             System.out.println(f);
  28.         }
  29.         System.out.println();
  30.         Naptár.kiírHónapokSzámaSzerintRendezve(nt);
  31.         System.out.println();
  32.         Naptár.kiírEmberekSzámaSzerintCsökkenőSorrendben(nt);
  33.     }
  34. }
letöltés szöveges állományként
  1. Hozza létre a Naptár osztály egyetlen konstruktorát az UML-diagramnak megfelelő paraméterezéssel! A konstruktor a paramétereként megkapott tömb referenciáját másolja a hónapok mezőbe!

  2. Bővítse ki a Naptár osztályt úgy, hogy az megvalósítsa a Comparable<Naptár> generikus interfészt! Az interfész által deklarált compareTo() metódust úgy implementálja, hogy az aktuális naptár példány hónapjainak a darabszámát a paraméterként megkapott naptár példány hónapjainak a számával hasonlítsa össze növekvő rendezettséget figyelembe véve!
  3. Írja meg a Naptár osztály kiírHónapokSzámaSzerintRendezve() nevű statikus metódusát úgy, hogy az a paramétereként megkapott tömb naptárait a benne tárolt hónapok darabszáma szerint növekvő sorba rendezze, majd a rendezett tömb elemeit kiírja a standard kimenetre!
  4. Írja meg a Naptár osztály kiírEmberekSzámaSzerintCsökkenőSorrendben() nevű statikus metódusát úgy, hogy az a paramétereként megkapott tömb naptárait az egyes naptárakban található, „ember” szuffixre végződő hónapok száma szerint csökkenő sorba rendezze, majd a rendezett tömb elemeit kiírja a standard kimenetre! A szuffix vizsgálatához használja a String osztálybeli endsWith() metódust!

Példa bemenet

  1. január;október
  2. február;szeptember;december;november
  3. október;december;március
  4. december;április;május;szeptember;augusztus
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. január, október
  2. február, szeptember, december, november
  3. október, december, március
  4. december, április, május, szeptember, augusztus
  5. január, október
  6. október, december, március
  7. február, szeptember, december, november
  8. december, április, május, szeptember, augusztus
  9. február, szeptember, december, november
  10. december, április, május, szeptember, augusztus
  11. október, december, március
  12. január, október
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.