Aufgabe Vorschlag AJ - Aufgabe 2 · Abitur Hessen Informatik LK 2021

Thema: Sortieren, Suchen und Laufzeit · Aus der Prüfung LK (2021)

Aufgabenstellung

Bogenschießen

Bei einem Volksfest soll ein Wettkampf im Bogenschießen stattfinden. Jeder Teilnehmer muss in drei Durchgängen je zehn Pfeile auf eine Scheibe schießen und dabei möglichst viele Ringe (als Trefferpunkte) erhalten. Die Ringe der einzelnen Durchgänge werden addiert.

Der Teilnehmer darf sich eine (noch nicht vergebene) Startnummer und einen Namen wählen, zudem wird die erreichte Zahl der Ringe gespeichert. Zu Beginn des Wettkampfes ist die Anzahl der Teilnehmer bekannt. Die Teilnehmer werden beim ersten Durchgang zusammen mit ihrer erreichten Anzahl von Ringen erfasst. Die Reihenfolge der Teilnehmer wird vor jedem Durchgang ausgelost.

Material 1

Quellcode der Klasse Ranking

01 public class Ranking {

02

03 private int AnzahlTeilnehmer;

04 private Teilnehmer[] dieTeilnehmer;

05

06 public Ranking(int AnzahlTeilnehmer) {

07 this.AnzahlTeilnehmer = AnzahlTeilnehmer;

08 dieTeilnehmer = new Teilnehmer[AnzahlTeilnehmer];

09 }

10

11 public int getAnzahlTeilnehmer() {

12 return AnzahlTeilnehmer;

13 }

14

15 public void fügeTeilnehmerHinzu(int Startnummer, String Name,

16 int AnzahlRinge) {

17 Teilnehmer einTeilnehmer = new Teilnehmer(Startnummer, Name);

18 aktualisiereRinge(einTeilnehmer, AnzahlRinge);

19 }

20

21 public Teilnehmer gibTeilnehmerAnStelle(int i) {

22 return dieTeilnehmer[i];

23 }

24

25 public void aktualisiereRinge(Teilnehmer einTeilnehmer, int neueRinge) {

26 einTeilnehmer.setAnzahlRinge(neueRinge + einTeilnehmer.getAnzahlRinge());

27 int i = 0, merke = 0;

28 while ((dieTeilnehmer[i] != null) && (einTeilnehmer.getAnzahlRinge() <=

29 dieTeilnehmer[i].getAnzahlRinge()))

30 i++;

31 if (dieTeilnehmer[i] != null) {

32 merke = i;

33 while ((dieTeilnehmer[i] != null) && (i < AnzahlTeilnehmer-1)) i++;

34 while (i > merke) {

35 dieTeilnehmer[i] = dieTeilnehmer[i-1];

36 i--;

37 }

38 }

39 dieTeilnehmer[i] = einTeilnehmer;

40 }

41

42 public void gibDieTeilnehmerAus() {

43... // gibt die aktuelle Ergebnisliste mit Namen und Startnummern aus

44 }

45 }

Aufgabe 2

2.1

Beschreiben Sie anhand des gegebenen Quelltextes in Material 1, wie die Teilnehmer in das Teilnehmerfeld aufgenommen und einsortiert werden. [5 BE]

2.2

Beurteilen Sie, inwiefern das implementierte Einfügeverfahren auch für die Erfassung der Durchgänge zwei und drei geeignet ist. [2 BE]

Aufgabenstellung: Aufgabe Vorschlag AJ - Aufgabe 2 · Abitur Hessen Informatik LK 2021

Lösung

Nach den offiziellen Korrekturhinweisen

2.1 Beschreiben Sie anhand des gegebenen Quelltextes in Material 1, wie die Teilnehmer in das Teilnehmerfeld aufgenommen und einsortiert werden.

Lösung: Durch den Aufruf der Methode fügeTeilnehmerHinzu(...) wird ein neuer Teilnehmer mit den als Parametern übergebenen Attributwerten für Startnummer und Name erzeugt. Diesem wird die ebenfalls als Parameter übergebene Anzahl seiner Ringe durch Aufruf der Methode aktualisiereRinge(...) hinzugefügt. Der Methode aktualisiereRinge(...) werden als Parameter der neue Teilnehmer und die neu erreichte Ringanzahl übergeben. Über die Methode setAnzahlRinge(...) wird die Anzahl der Ringe um die neu erreichten Ringe erhöht. Das Feld aller bisher erfassten Teilnehmer wird solange durchlaufen, bis ein noch freies Element gefunden wird oder die Anzahl der Ringe des einzusortierenden Teilnehmers größer ist als die des Teilnehmers der Stelle i. Wurde ein Teilnehmer mit weniger oder gleich vielen Ringen gefunden, wird die Stelle i in merke zwischengespeichert. Nun wird das Feld bis zum ersten leeren Element oder der letzten Stelle im Feld durchlaufen. Alle Teilnehmer, die hinter merke stehen, werden um eine Stelle nach hinten verschoben. Zuletzt wird der einzusortierende Teilnehmer in das Feld an der Stelle i eingefügt. Ist das Feld noch leer oder die Anzahl der Ringe der kleinste Wert, wird der Teilnehmer an der ersten freien Stelle angefügt.

2.2 Beurteilen Sie, inwiefern das implementierte Einfügeverfahren auch für die Erfassung der Durchgänge zwei und drei geeignet ist.

Lösung: Das Einfügeverfahren eignet sich so nicht für die weiteren Durchgänge, da jeder Teilnehmer nur einmal im Feld enthalten sein darf. Der Teilnehmer mit der neuen Ringzahl wird über aktualisiereRinge(...) ins Feld eingefügt, anstatt ihn vorher zu löschen. So kann er mehrfach im Feld gespeichert sein.

Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium

Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.

‹ Aufgabe Vorschlag B3 - Aufgabe 6 · GK 2021 · Aufgabe Vorschlag C2 - Aufgabe 1 · LK 2021 ›

Mehr Aufgaben zu Sortieren, Suchen und Laufzeit