Zum Inhalt springen

AP2 - Sommer 2023 - FIAE Teil 2 Lösungen


Empfohlene Beiträge

Hallo miteinander,

ich mache hier mal für uns AEler ein Thema auf in dem wir die Lösungen von Teil 2 zusammentragen können. Ich denke vor allem relevant sind die Problemaufgaben 2 und 3.

  • 2. Aufgabe:
    • Wie sah euer Pseudocode aus?
    • Habt ihr die Aufgabe behandelt als wäre ein Array / Liste übergeben worden?
  • 3. Aufgabe:
    • Welche Fehler habt ihr gefunden?
    • Wie habt ihr diese korrigiert?
    • Kam es nur mir so vor oder hat sich die Anweisungsabdeckungsaufgabe selbst beantwortet?
    • Welchen Testfall habt ihr ergänzt?

Ich bin gespannt auf euren Input :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Minute schrieb testplayer975:

Hat einer die Aufgabe 3? Als FiSi würde mich der Spaghetti Code echt mal interessieren

Leider nicht, ich kann dir nur so viel sagen, einem wird beigebracht "sprechende" Variablenbezeichnungen zu verwenden und die liefern den größten Gammelcode ab, welcher Chaotisch bis zum geht nicht mehr ist und dessen Sinn ich immer noch nicht wirklich verstanden habe und das obwohl ich recht gut damit zurecht gekommen bin.

Ich habe am Ende einfach ignoriert was der Code tun soll und stumpf die Logik betrachtet. :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hab den Code beim ersten Blick voll nicht gecheckt und das ganz nach hinten geschoben, erst den Rest gemacht. Dann wurd die Zeit auch knapp um alles zu verstehen.
Ein Fehler war denk ich, dass am Anfang irgendwelche Werte auf 0 gesetzt und dann auf größer (oder kleiner?) verglichen wurden, wozu es ja nie kommt.

Ich hab als Fehler noch angemerkt, dass die Strings nicht gestimmt haben. Also mit der Ausgabe unten passte das nicht zusammen, teils fehlten Leerzeichen bzw. Tabs und einmal auch ein Doppelpunkt. Und außerdem hab ich auch noch bei Codeverbesserungen geschrieben, man solle passende, englische (!) Bezeichnungen wählen, Beispiel "month" statt "Monat" (nach dem Motto "irgendwas schreiben, vielleicht Mitleidspunkte").

Warum kann man nicht mehr einen Teil weglassen? Das wär definitiv dieser geworden.

 

Wäre mega, wenn wer den Code hat und den hier posten könnte, damit man noch mal in Ruhe drüber schauen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Meine Lösungen sahen übrigens wie folgt aus:

Aufgabe 2:

Vorab, ich habe den "entry" als Liste/Array behandelt, da die Aufgabe ansonsten keinen Sinn ergeben hat und nicht lösbar war.

Beschreibung meines Codes:
tag, stunde und aktuelleBesucherAnzahl als variablen definiert und mit dem. tag und stunde mit den Daten des 1. eintrags initalisiert aBA mit 0
result array angelegt mit der größe [31][10] (31 weil Tage im Monat (hätte man auch per Methode ziehen können aber alle Monate passen in ein Array der größe 31 also was solls :D) (10 weil 9-19 Uhr 10 Stunden enthalten hat)

foreach über entry machen, am Anfang der Schleife vor der "rechenlogik" habe ich geprüft ob eine neue Stunde bzw ein neuer Tag angebrochen ist. Bei einer neuen Stunde habe ich die bisher aktuelleBesucherAnzahl an die Stelle [tag-1][stunde-9] in das result Array geschrieben. Bei einem neuen Tag habe ich das gleiche gemacht aber zusätzlich noch den aktuelleBesucherZaehler auf 0 gesetzt.

Anschließend habe ich abgefragt ob der Datensatz kommen (0) oder gehen (1) enthält und dementsprechend aktuellePersonenAnzahl += / -= der Personenanzahl die zu dem Ticket gehören genommen.

nach dem durchlauf der Schleife musste ich den letzten Wert noch in das Array eintragen, da ich ja die Bedingung am Anfang der Schleife nicht mehr erreicht habe und dann das result Array returnen.

Das ist definitiv keine 100% Lösung. Mein Code beachtet nicht die Angabe bezüglich eine Person zählt wenn sie geht erst ab der darauffolgenden Stunde als gegangen, aber mit solchen Kleinigkeiten konnte ich mich einfach nicht beschäftigen, weil wir alle wissen was da für ein Zeitdruck war.

 

Aufgabe 3:

Fehler 1: Der Print mit "Daten zum Monat: [Monat]" hat immer den nächsten Monat geschrieben und nicht den zu dem die Daten eigentlich gehören

Fehler 2: Der letzte Monat wurde nicht geprintet, da wie in meiner Pseudocode Lösung am Anfang der Schleife eine Bedingung zum Printen stand, diese aber nicht mehr erreicht wird weil die Schleife nach dem letzten Element aufhört, ergo müsste nach dem Schleifendurchlauf noch ein letzter Print Monat ausgeführt werden, dieser war aber nicht im Code.

Behebung:

1. Print Monat abändern zum Print des vergangenMonats, dieseer war ja in der ifAbfrage als td.monat oder so auch vorhanden.

2. Nach der Schleife die Zeilen in der großen IFCondition erneut implementiern (Auslagern in einer Funktion bietet sich da natürlich an)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann mal noch meine Erfahrungen mit der Prüfung teilen.

Also Aufgabe 1 waren gefühlt geschenkte Punkte zum Glück. War ganz lustig sich durch die einzelnen Abteilungen durchzuwursten und die Informationen zusammenzutragen. Wenn man da nicht durcheinander gekommen ist ging das recht klar.

 

Zu Aufgabe 2 kann ich meinem Vorschreiber in größten Teilen zustimmen da ich das ähnlich umgesetzt habe. Ich habe die entry-Variable auch als Liste behandelt und mit foreach durchitteriert. Im Nachhinein bin ich mir aber doch ziemlich sicher das es sich bei dem entry-Objekt um ein ResultSet handelt weil zum einen in der Aufgabe davon gesprochen wurde das die Tabelle in der DB auch InOut (oder so) heißt als auch weil das sonst absolut keinen Sinn machen würde. Man hätte dann wahrscheinlich mit hasNext() durchloopen sollen. Ich finde das natürclich auch sehr problematisch weil das definitiv nicht richtig oder genug in der Aufgabenstellung gezeigt wurde. Des weiteren habe ich das dann so umgesetzt das ich mir die größen für das array über die Methoden gesetzt habe also -> array[anzahlTageImMonat][9]. Dann durch entry durch-itteriert und erst geschaut ob InOut 1 oder 0 ist und basierend darauf dann += oder -= gerechnet. Die Array position dann mit array[anzahlTageImMonat - 1][stunde-9] bestimmt. am ende dann einfach das array zurückgegeben.

 

Bei Aufgabe 3 habe ich die Fehler gefunden das der erste Monat nicht ausgewertet wird weil die variable monat mit dem ertsen Monat der Testdaten vorbelegt wird also "Januar". Eine Auswertung findet nur statt wenn monat != monatJetzt ist und das ist bei einer Vorbelegung von "Januar" nicht der Fall und somit wird Januar komplett übersprungen. Ein anderer Fehler den ich gefunden habe ist das die minMonat und minJahr Variablen nicht richtig gesetzt werden weil da ein "<=" gefehlt hat. Das sind dann auch die Anweisungen die bei der Anweisungsüberdeckung nicht gecovered werden. Als mögliche Umsetzung hab ich gesgt das man monat mit einem leeren String vorbelegt und die min berechnung um ein "<=" angepasst wird. Ob das jetzt wirklich so war hab ich keine Ahnung, ich hab es halt auch nur so gemacht das ich die Funktionalität komplett ingoriert habe und nur die Logik Stück für Stück abgegangen habe. Das hat auch echt einiges an Zeit gefressen.

 

Aufgabe 4 war halt Standard-SQL wobei mich hier genervt hat das Spalten wie Datum_Soll nicht definiert waren ob die vom typ varchar oder Date waren weshalb ich nicht wusste ob ich das Datum jetzt mit toChar oder so noch umformen musste.

 

Im Großen und ganzen fande ich die Prüfung echt heavy sowohl Afgabenteil 2 als auch Aufgabenteil 1. Ich hoffe auf 4 gewinnt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...