Begleitmaterial Abitur 2024

Prüfungsvorbereitung alternative Lösung von Tim und Sarah

a)

Eine Liste ist für die Modellierung einer Bowling-Rinne besser geeignet als eine Schlange, da die spielende Person nicht immer die erste Kugel wählen muss, sondern sich eine Aussuchen kann. Anders als das first-in-first-out Prinzip der Schlange ist das interagieren mit einem Liste nämlich felixbel.


b)

public class Kugel{
    
    private String farbe;
    private int gewicht;
    
    public Kugel(String farbe){
        switch(farbe){            
            case "blau":
                this.farbe = farbe;
                this.gewicht = 10;
                break;
                
            case "gelb":
                this.farbe = farbe;
                this.gewicht = 8;
                break;
                
            case "rosa":
                this.farbe = farbe;
                this.gewicht = 6;
                break;
                
            default:
                System.out.println("angegebene Farbe nicht verfügbar");
        }
    }
}

c)

Kursimplimentation

import java.util.HashMap;

public class Bowlingbahn{
    
    private Q1Liste<Kugel> rinne = new Q1Liste();
    
    public Bowlingbahn(){
        
    }
    
    
    public void kugelHinzufuegen(Kugel pKugel){
        rinne.append(pKugel);
    }
    
    
    public void kugelEntfernen(){
        
    }
    
    
    public String haefigsteFrabe(){
        
        String haeufigsteFarbe = "";
        HashMap<String, Integer> anzahl = new HashMap();
        
        anzahl.put("rosa", 0);
        anzahl.put("gelb", 0);
        anzahl.put("blau", 0);
        
        for(int i = 0; i < rinne.getSize(); i++){
            String aktuelleFarbe = rinne.get(i).getFarbe();
            anzahl.put(aktuelleFarbe, anzahl.get(aktuelleFarbe) + 1);
        }
        
        String zuvorigeFarbe = "";
        
        for(String farbe : anzahl.keySet()){
            
            if(zuvorigeFarbe != ""){
                if(anzahl.get(farbe) > anzahl.get(zuvorigeFarbe)){
                    haeufigsteFarbe = farbe;
                }
            }
            else{
                haeufigsteFarbe = farbe;
            }
            zuvorigeFarbe = farbe;
        }
        
        return haeufigsteFarbe;
    }
    
    
}

ZA-Implimentation

import java.util.HashMap;

public class ZABowlingbahn{
    
    private ZAListe<Kugel> rinne = new ZAListe();
    
    public ZABowlingbahn(){
        
    }
    
    
    public void kugelHinzufuegen(Kugel pKugel){
        rinne.append(pKugel);
    }
    
    
    public void kugelEntfernen(){
        
    }
    
    
    public String haefigsteFrabe(){
        
        String haeufigsteFarbe = "";
        HashMap<String, Integer> anzahl = new HashMap();
        ZAListe<Kugel> tmp = rinne;
        
        anzahl.put("rosa", 0);
        anzahl.put("gelb", 0);
        anzahl.put("blau", 0);
        
        while(!tmp.isEmpty()){
            tmp.toFirst();
            String aktuelleFarbe = tmp.getContent().getFarbe();
            tmp.remove();
            anzahl.put(aktuelleFarbe, anzahl.get(aktuelleFarbe) + 1);
        }
        
        String zuvorigeFarbe = "";
        
        for(String farbe : anzahl.keySet()){
            
            if(zuvorigeFarbe != ""){
                if(anzahl.get(farbe) > anzahl.get(zuvorigeFarbe)){
                    haeufigsteFarbe = farbe;
                }
            }
            else{
                haeufigsteFarbe = farbe;
            }
            zuvorigeFarbe = farbe;
        }
        
        return haeufigsteFarbe;
    }
    
    
}

d)

Staender.java

import java.util.Arrays;

public class Staender
{
    public Kugel[] vorrat = new Kugel[20];
    
    public Staender(){
        
    }
    
    public void setVorrat(Kugel[] pVorrat){
        vorrat = pVorrat;
    }
    public void vorratAusgeben(){
        System.out.println(Arrays.toString(vorrat));
    }
}

Spieler.java

public class Spieler
{
    public Spieler(){
        
    }
    
    private Kugel blau(){
            Kugel pblau = new Kugel("blau");
            return pblau;
    }
    
    private Kugel gelb(){
            Kugel pgelb = new Kugel("gelb");
            return pgelb;
    }
    
    private Kugel rosa(){
            Kugel prosa = new Kugel("rosa");
            return prosa;
    }
    
    public void setupAufgabe(){
        Kugel[] k1 = {new Kugel("gelb"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("blau"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa")};
        Kugel[] k2 = {new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("blau")};
        Kugel[] k3 = {new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("blau"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("gelb")};
        Kugel[] k4 = {new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("blau"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("gelb"),new Kugel("gelb"),new Kugel("rosa")};
        Kugel[] k5 = {new Kugel("rosa"),new Kugel("gelb"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("blau"),new Kugel("gelb"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("gelb"),new Kugel("gelb"),new Kugel("rosa"),new Kugel("rosa"),new Kugel("gelb")};
        Staender steanderEins = new Staender();
        steanderEins.setVorrat(k1);
        Staender steanderZwei = new Staender();
        steanderZwei.setVorrat(k2);
        Staender steanderDrei = new Staender();
        steanderDrei.setVorrat(k3);
        Staender steanderVier = new Staender();
        steanderVier.setVorrat(k4);
        Staender steanderFuenf = new Staender();
        steanderFuenf.setVorrat(k5);
        Staender[] s = {steanderEins, steanderZwei, steanderDrei, steanderVier, steanderFuenf};
        methode1(s);
        for(int i = 0; i < s.length; i++){
            s[i].vorratAusgeben();
        }
    }
    
    
    public void methode1(Staender[] pStaender){
        for(int a = 0; a < 100; a++){
            for(int i = 0; i < pStaender.length; i++){
                for(int j = 0; j < 20; j++){
                    Kugel aktKugel = pStaender[i].vorrat[j];
                    if(aktKugel.getFarbe().equals("blau")){
                        if(j < 19){
                            Kugel hilf = aktKugel;
                            pStaender[i].vorrat[j] = pStaender[i].vorrat[j+1];
                            pStaender[i].vorrat[j+1] = hilf;
                        }
                        else{
                            if(i < pStaender.length - 1){
                                Kugel hilf = aktKugel;
                                pStaender[i].vorrat[j] = pStaender[i+1].vorrat[0];
                                pStaender[i+1].vorrat[0] = aktKugel;
                            }
                        }
                    }
                }
            }
        }
    }
}

Kugel.java

public class Kugel{
    
    private String farbe;
    private int gewicht;
    
    public Kugel(String farbe){
        switch(farbe){            
            case "blau":
                this.farbe = farbe;
                this.gewicht = 10;
                break;
                
            case "gelb":
                this.farbe = farbe;
                this.gewicht = 8;
                break;
                
            case "rosa":
                this.farbe = farbe;
                this.gewicht = 6;
                break;
                
            default:
                System.out.println("angegebene Farbe nicht verfügbar");
        }
    }
    
    public String getFarbe(){
        return this.farbe;
    }
    public int getGewicht(){
        return this.gewicht;
    }
    @Override
    public String toString(){
        return(this.farbe);
    }
    public boolean istIdentisch(Kugel pKugel){
        return(this.gewicht == pKugel.gewicht && this.farbe.equals(pKugel.farbe));
    }
}

Ergebniss:

  • [gelb, rosa, gelb, rosa, rosa, rosa, rosa, gelb, rosa, rosa, rosa, rosa, gelb, rosa, rosa, gelb, gelb, rosa, rosa, rosa]
  • [gelb, rosa, gelb, rosa, gelb, rosa, rosa, rosa, gelb, rosa, gelb, rosa, gelb, rosa, gelb, rosa, gelb, rosa, gelb, rosa]
  • [rosa, gelb, rosa, gelb, rosa, rosa, rosa, rosa, rosa, gelb, rosa, rosa, rosa, rosa, rosa, gelb, gelb, rosa, gelb, rosa]
  • [rosa, gelb, rosa, gelb, rosa, rosa, rosa, gelb, gelb, rosa, rosa, rosa, gelb, gelb, gelb, rosa, rosa, gelb, gelb, rosa]
  • [rosa, rosa, rosa, gelb, gelb, rosa, rosa, gelb, gelb, rosa, gelb, gelb, rosa, rosa, gelb, blau, blau, blau, blau, blau]