programmierer_2 Geschrieben 4. Mai 2021 Teilen Geschrieben 4. Mai 2021 Hier ist mein Beispiel Code für HS2 für die Prüfung Winter 2019/20 GA1 erzeugeListe(persnr: int, zeiten : zweidim, Tabelle vom Typ int, jahr: int, monat :int): schreibeKopf(persnr, jahr, monat) dateTime anwesenheit = "" int summeAnwesenheit = 0 int tageImMonat = 0 for(int x = 0; x < zeiten.length; x++) for(int y; y < zeiten[x].length; y++): String bemerkung = "" tageImMonat = tageImMonat(monat, jahr) if(zeiten[1][y] == null): bemerkung = "nicht anwesend" else if (zeiten[2][y] == null): bemerkung "Buchung fehlt" if(y > 1): anwesenheit = zeiten[2][y] - zeiten[1][y] summeAnwesenheit = summeAnwesenheit + anwesenheit if(tageImMonat > zeiten[0][y).length): break; schreibeZeile(zeiten[0][y], zeiten[1][y], zeiten[2][y], zeiten[3][y], anwesenheit) schreibeFuss(summeAnwesenheit) Es ist wie ich eine Pseudocode Aufgabe lösen wurde. Hier ist allerdings ein Fehler, da ich nicht beachtet habe das die Zeiterassungstabelle keine einzelne Tage beihnaltet. Wie viel Punkte wurde ich verlieren wenn ich bei der Aufgabe eine Sache nicht beachtet habe? Mache ich das Falsch? Sollte ich es vielleicht diese Aufgabe sicherheitshalber durchstreichen , oder der Lösungsweg ist einigermaßen richtig und es gibts teilpunkte? (So 15-20?) PS: Ich lerne schon seit Januar, aber beim Pseucode bin ich mir die Bewertungen der Prüfer nicht sicher. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jana309 Geschrieben 4. Mai 2021 Teilen Geschrieben 4. Mai 2021 Generell ist es schwierig dir Tipps zu geben, wenn wir nur deinen Lösungsversuch und nicht die Aufgabe kennen. Ich erinnere mich zufällig an diese Aufgabe von meiner eigenen Prüfungsvorbereitung. Die zweidimensionale Tabelle enthält Zeilen, die je einen Wert für "Tag im Monat", "Stunden" und "Minuten" enthalten. Zu einem Tag kann es unterschiedliche Anzahl an Zeilen geben, auch gar keine. Je nach Anzahl der vorhandenen Zeilen zu jedem Tag soll etwas bestimmtes ausgegeben und ggf berechnet werden, richtig? Hier ein paar Tipps zu deinem Code: - Nicht jedes zweidimensionale Array muss mit zwei geschachtelten Schleifen durchlaufen werden. Jede Tabellenzeile von links nach rechts per Schleife durchzulaufen macht hier keinen Sinn. Dass eine deiner Schleifen überflüssig ist, erkennst du auch daran, dass du die Laufvaribale x der äußeren Schleife nirgends verwendet wird. - du rufst die Funktion tageImMonat bei jedem Schleifendurchgang auf, statt einmal vor der Schleife. (das ist in derPrüfung kein Fehler, aber schön ist es nicht) - du prüfst ob ein bestimmer Wert des 2D-int Array gleich "null" ist. Das ist im Kontext der Aufgabe nicht verlangt und in vielen Programmiersprachen auch gar nicht möglich. Das würde ich auch im Pseudocode unterlassen. Schlimmer noch: Unabhängig davon wie das Ergebnis der Prüfung ausfällt rechnest du später mit dem Wert. - Deine Abbruchbedingung macht keinen Sinn. Du greifst auf ein length-Property eines Integers zu? Was bedeutet das? Selbst wenn du einfach den Wert des Integers zeiten[0][y] meinst (der "Tag"-Wert eines Zeiteintrags), funktioniert es nicht: DAnn wird die Schleife beim ersten Druchgang gleich abbrechen. - Ich würde bei Schleifen und Verzweigungen mit Klammern (oder End-Statements) arbeiten. In deinem Code ist nur durch die Einrückung zu erkennen welcher Code in welche Schleife gehört. Bei handschriftlicher Bearbeitung kann das problematisch sein. - Du versuchst durch verrechnen zweier int-Werte Zeitspannen zu berechnen. Da jeder int-Wert nur Teil eines Zeitstempels ist (Stunde oder Minute) kann das so nicht funktionieren. In die Berechnung einer Zeitspanne müssen 4 int-Werten einfließen. Bei dieser Aufgabe würde ich folgende Vorgehensweise wählen: Zwei schleifen: Äußere Schleife iteriert über die Tage im Monat: for(int tag = 1; tag <= tageImMonat; tag++){..} Innere Schleife durchsucht die Tabelle nach zum Tag gehörigen Einträgen und macht alle nötigen PRüfungen und Berechnungen Zur Bewertung kann ich leider nicht viel sagen. Meiner Ansicht nach würde dein Lösungsvorschlag nicht sehr viele Punkte erzielen, dafür fehlt es schon an einem funktionierenden Grundansatz. (Kann natürlich auch sein, dass ich auf dem Schlauch stehe und die Idee hinter deinem Code nicht verstehe) programmierer_2 und testplayer975 reagierten darauf 1 1 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
programmierer_2 Geschrieben 5. Mai 2021 Autor Teilen Geschrieben 5. Mai 2021 @Jana309 Danke für die Tipps! Ja, hast du recht beim Vielen Stellen :D Ich hab mal die Aufgabe in der Gruppe besprochen und ist genau wie du sagst :) Danke! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.