Programozó versenyek

Programozási technológiák, 2015. március 18., Sze14 ZH

2015. március 18. 14:15 – 2015. március 18. 15:45

Összetevők

Tekintse az alábbi osztálydiagramot!

Töltse le a Teszt.java osztályt, majd egészítse ki egy Élelmiszer, egy Összetevő és AllergénÖsszetevő osztállyal a fenti ábrának megfelelően.

Figyeljen arra, hogy az osztályok toString() metódusait úgy írja meg, hogy a példa kimenetben látható formátumban lehessen előállítani ezen osztályok példányainak sztringreprezentációját!

Az Élelmiszer osztályban implementálja az allergenitás() metódust, mely visszaadja egy élelmiszer allergenitását. Azt, hogy mennyire allergén egy élelmiszer úgy kapjuk meg, hogy összeadjuk az egyes allergén összetevők allergenitási szintjeit, és megszorozzuk azzal, hogy hány allergén összetevő található az élelmiszerben.

A Teszt osztályban implementáljon egy legAllergénebb() metótust, mely paraméterül megkap egy élelmiszereket tartalmazó listát és visszaadja a legallergénebb élelmiszereket tartalmazó listát. A listába csak olyan élelmiszerek kerülhetnek bele melyek allergenitása nagyobb, mint 0.

A bemeneten az összetevők mellett n darab * karakter jelöli, hogy mennyire allergén (0 < n <= 3). Ha egy összetevő mellett nem szerepel csillag, akkor nem allergén összetevő.

Teszt.java

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.Comparator;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.Scanner;
  8. import java.util.TreeMap;
  9. /* Your code here */
  10. public class Teszt {
  11.     /* Your code here */
  12.     public static void main(String[] args) {
  13.         Scanner sc = new Scanner(System.in);
  14.         List<Élelmiszer> élelmiszerek = new ArrayList<Élelmiszer>();
  15.         while (sc.hasNextLine()) {
  16.             List<Összetevő> összetevőkLista = new ArrayList<Összetevő>();
  17.             String[] sorTömb = sc.nextLine().split(";");
  18.             String[] összetevőkTömb = sorTömb[2].split(",");
  19.             for (int i = 0; i < összetevőkTömb.length; i++) {
  20.                 int csillagok = hányCsillagos(összetevőkTömb[i]);
  21.                 if (csillagok == 0) {
  22.                     összetevőkLista.add(new Összetevő(összetevőkTömb[i]));
  23.                 } else {
  24.                     String megnevezés = összetevőkTömb[i].substring(0,
  25.                             összetevőkTömb[i].length() - csillagok);
  26.                     összetevőkLista.add(new AllergénÖsszetevő(megnevezés,
  27.                             csillagok));
  28.                 }
  29.             }
  30.             élelmiszerek.add(new Élelmiszer(sorTömb[0], sorTömb[1],
  31.                     összetevőkLista));
  32.         }
  33.         List<Élelmiszer> legAllergénebbLista = legAllergénebb(élelmiszerek);
  34.         Collections.sort(legAllergénebbLista, new Comparator<Élelmiszer>() {
  35.             @Override
  36.             public int compare(Élelmiszer o1, Élelmiszer o2) {
  37.                 return o1.getMegnevezés().compareTo(o2.getMegnevezés());
  38.             }
  39.         });
  40.         for (Élelmiszer élelmiszer : legAllergénebbLista) {
  41.             System.out.println(élelmiszer);
  42.         }
  43.     }
  44.     private static int hányCsillagos(String összetevő) {
  45.         if (összetevő.contains("*")) {
  46.             return összetevő.length() - összetevő.indexOf("*");
  47.         } else {
  48.             return 0;
  49.         }
  50.     }
  51. }
letöltés szöveges állományként

Példa bemenet

  1. Kenyér;Pék Kft.;liszt,víz,cukor,só,élesztő
  2. Tonhal; FrissFish Kft.;tonhal, só, víz, E621**
  3. Májkrém;Hús Kft.; máj, sertésbőrke, szalonna, E621**
letöltés szöveges állományként

Példa kimenet

  1. Májkrém:2
  2. Tonhal:2
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.