bademeister Geschrieben 20. Februar 2008 Geschrieben 20. Februar 2008 Hi Leute! Hab hier eine alte Prüfung mit folgender Aufagbe (sinngemäß) und bitte euch um Lösungsvorschläge! ----------------------------------------------------------------------- Array: Sonnenstunden PLZ SONNENSTUNDEN ... ... ... ... 50606 1.200 51491 1.100 ... ... ... ... Erstellen Sie einen Algorithmus in Pseudocode, der die Sonnenstunden zu einer eingegebenen PLZ ausgibt. - Die Zeilen des Arrays sind nach Postleitzahl aufsteigend sortiert - Wird die angegebene PLZ nicht gefunden, sollen die Sonnenstunden der nächstkleineren PLZ verwendet werden. - Ist die angegebene PLZ kleiner als die kleinste im Array angegebende PLZ soll -1 zurrückgegeben werden. ----------------------------------------------------------------------- (Vorallem wir das mit der nächstkleineren PLZ klappen soll weiß ich echt garnicht) 10 Pkt gab es übrigens auf diese Aufgabe Danke im Vorraus Zitieren
lupo49 Geschrieben 20. Februar 2008 Geschrieben 20. Februar 2008 Um das Problem mit der naechstkleineren PLZ zu loesen, wuerde ich die eingegebene PLZ dekrementieren und die Schleife, die ueberprueft ob die PLZ gleich sind, erneut durchlaufen. Um nicht bis Null zu zaehlen, vorher eine Ueberpreufung einbauen, ob die kleinste PLZ die im Array ist, erreicht ist. Zitieren
bademeister Geschrieben 21. Februar 2008 Autor Geschrieben 21. Februar 2008 ...klingt vernünftig. Danke für die schnelle Antwort! Zitieren
lupo49 Geschrieben 23. Februar 2008 Geschrieben 23. Februar 2008 Ich wollte die Aufgabe grade mal loesen, da stellt sich mir die Frage, wie das Array aufgebaut ist: Sonnenstunden[PLZ] = Sonnenstunden? Ist dass so richtig? Und wie ueberprueft man dann, ob es zu einer PLZ Sonnenstunden gibt? Zitieren
bademeister Geschrieben 24. Februar 2008 Autor Geschrieben 24. Februar 2008 .. da stellt sich mir die Frage, wie das Array aufgebaut ist: Sonnenstunden[PLZ] = Sonnenstunden? Ist dass so richtig? Und wie ueberprueft man dann, ob es zu einer PLZ Sonnenstunden gibt? Wie der Array aufgebaut ist sieht man ja in meinem Beitrag.... linke spalte [PLZ] rechte die dazugehörigen Sonnenstunden. Ob die PLZ in dem Array ist findet man so raus: Eingabe: postleitzahl found = False Für alle Elemente in Array lese Element wenn Element.PLZ = postleitzahl dann ausgabe Element.Sonnenstunden found = True verlasse for-schleife ende_wenn nächstes Element Wenn found = False dann ... ... Zitieren
lupo49 Geschrieben 24. Februar 2008 Geschrieben 24. Februar 2008 Wie der Array aufgebaut ist sieht man ja in meinem Beitrag.... linke spalte [PLZ] rechte die dazugehörigen Sonnenstunden. Ob die PLZ in dem Array ist findet man so raus: Eingabe: postleitzahl found = False Für alle Elemente in Array lese Element wenn Element.PLZ = postleitzahl dann ausgabe Element.Sonnenstunden found = True verlasse for-schleife ende_wenn nächstes Element Wenn found = False dann ... ... Das sieht fuer mich eher so aus, ob "Element" ein Objekt waere mit zwei Variablen "PLZ" und "Sonnenstunden". Wenn das Array aufgebaut ist wie Sonnenstunden[PLZ] = Sonnenstunden Beispiel: Sonnenstunden[56098] = 12000 dann wuerde das ja so nicht gehen. Zitieren
bademeister Geschrieben 24. Februar 2008 Autor Geschrieben 24. Februar 2008 Im Element eines Arrays sind zwei Rückgabewerte. Einmal die linke Seite des aktuellen Elements [PLZ] und die rechte Seite [sonnenstunden]. Also kann man doch schreiben "Element.PLZ" bzw. "Element.Sonnenstunden" um den aktuellen Satz anzusprechen.... ...so hab ich das zumindest in anderen Aufgaben schon gesehn. Zitieren
bademeister Geschrieben 24. Februar 2008 Autor Geschrieben 24. Februar 2008 ich glaube du hast doch recht! Mein Code wäre für eine Datenstruktur verwendbar, aber nicht für einen array... Muss man den Array dann erst in eine Hashtabelle verlagern ? Wenn ja wie in Pseudocode? Oder kann man irgendwie anders den Array über den Index (PLZ) durchsuchen ? Weil "Element" wäre ja Sonnenstunden und nicht plz :confused: Zitieren
lupo49 Geschrieben 24. Februar 2008 Geschrieben 24. Februar 2008 ich glaube du hast doch recht! Mein Code wäre für eine Datenstruktur verwendbar, aber nicht für einen array... Muss man den Array dann erst in eine Hashtabelle verlagern ? Wenn ja wie in Pseudocode? Oder kann man irgendwie anders den Array über den Index (PLZ) durchsuchen ? Weil "Element" wäre ja Sonnenstunden und nicht plz :confused: Mein Vorschlag waere jetzt ein temporaeres Array anzulegen, dass als Elemente alle PLZ hat. tmp_PLZ[0] = 59876; tmp_PLZ[1] = 34534; Das dann fuellen in dem man alle Indexe aus "Sonnenstunden" ausliest und in das tmp Array packt. Sollte dann eine PLZ uebereinstimmen if(tmp_PLZ == Eingabe_PLZ) dann Ausgabe Sonnenstunden[PLZ] So in der Art. Ich bin auch nicht so der Programmierer (die von der IHK anscheinend auch nicht). Zitieren
Abd Sabour Geschrieben 25. Februar 2008 Geschrieben 25. Februar 2008 Wir haben dir Aufgabe letztens im Unterricht bekommen - der Dreisatz spielt bei der Lösung ebenfalls noch mit rein. Ich fand die Aufgabe etwas ... merkwürdig. Wer die Lösung haben will kann mir Bescheid geben (PN oder hier posten). Zitieren
bademeister Geschrieben 25. Februar 2008 Autor Geschrieben 25. Februar 2008 der Dreisatz spielt bei der Lösung ebenfalls noch mit rein. Dreisatz :beagolisc Wäre cool wenn du die Lösung hier posten könntest... dann haben wenigstens alle was davon! Zitieren
Abd Sabour Geschrieben 25. Februar 2008 Geschrieben 25. Februar 2008 Dreisatz :beagolisc Wäre cool wenn du die Lösung hier posten könntest... dann haben wenigstens alle was davon! Jepp, mach ich sobald ich daheim bin - muss die Seitenausdrucke erst einscannen - der Orginalcode liegt leider in der Schule ... Zitieren
Abd Sabour Geschrieben 25. Februar 2008 Geschrieben 25. Februar 2008 Anbei die Lösung - in Java implementiert - kann ja zu Pseudocode abstrahiert werden . MFG Abd Sabour Zitieren
lupo49 Geschrieben 25. Februar 2008 Geschrieben 25. Februar 2008 Anbei die Lösung - in Java implementiert - kann ja zu Pseudocode abstrahiert werden . MFG Abd Sabour Danke sehr! Wie stellt man denn ein 2-dimensionales Array in Pseudocode dar? Zitieren
Abd Sabour Geschrieben 25. Februar 2008 Geschrieben 25. Februar 2008 Danke sehr! Wie stellt man denn ein 2-dimensionales Array in Pseudocode dar? Gute Frage - vielleicht kann sich mal ein IHKler dazu äußern ? Soweit ich weiß, war dieser Sonnenstunden Array vorgegeben und benuzten musstest du ihn ja im Pseudo-Code. Ich glaub die Java-Notation ist aber auf jeden Fall möglich - viel mehr alternative Ideen bezüglich Array-Notation in Pseudo Code habe ich auch nicht :confused:. Zitieren
kochphilip Geschrieben 26. Februar 2008 Geschrieben 26. Februar 2008 Wenn man zwei Arrays hat (ein Array mit Sonnenstunden und ein mit Postleitzahlen) würde das nicht eigenlich schon reichen, oder verstehe ich die Aufgabe nur komplett falsch? Eingabe PLZ FOR i = 1 TO anz_plz WENN tPLZ[i] = PLZ AUSGABE Sonnenstunden[i] BEENDE SCHLEIFE WENN tPLZ[i] > PLZ WENN i > 1 AUSGABE Sonnenstunden[i - 1] ANSONSTEN AUSGABE -1 BEENDE SCHLEIFE ENDE DER SCHLEIFE Zitieren
Abd Sabour Geschrieben 26. Februar 2008 Geschrieben 26. Februar 2008 Wenn man zwei Arrays hat (ein Array mit Sonnenstunden und ein mit Postleitzahlen) würde das nicht eigenlich schon reichen, oder verstehe ich die Aufgabe nur komplett falsch? Wieso zwei Arrays ? Es gibt nur einen und der enthält sowohl sonnenstunden als auch Postleitzahlen - ZWEIdimensional heißt das Zauberwort ! Zitieren
lupo49 Geschrieben 27. Februar 2008 Geschrieben 27. Februar 2008 Anbei die Lösung - in Java implementiert - kann ja zu Pseudocode abstrahiert werden . MFG Abd Sabour Da ist glaube ich ein Fehler im Quellcode und zwar bei der Schleife die die naechstkleinere PLZ sucht. Da fangt ihr an bei dem ersten Element im Array (die kleinste PLZ im ganzen Array) zu ueberpruefen, ob die eingegebene PLZ kleiner ist. Das wuerde richtig sein, wenn nicht gefordert waere die naechstkleinere auszugeben. Ich denke da muss man den Zaehler auf das letzte Element setzen im Array und dann immer um eins dekrementieren und vergleichen. So erhaelt man dann die nächstkleinere PLZ. Wenn man zwei Arrays hat (ein Array mit Sonnenstunden und ein mit Postleitzahlen) würde das nicht eigenlich schon reichen, oder verstehe ich die Aufgabe nur komplett falsch? Eingabe PLZ FOR i = 1 TO anz_plz WENN tPLZ[i] = PLZ AUSGABE Sonnenstunden[i] BEENDE SCHLEIFE WENN tPLZ[i] > PLZ WENN i > 1 AUSGABE Sonnenstunden[i - 1] ANSONSTEN AUSGABE -1 BEENDE SCHLEIFE ENDE DER SCHLEIFE Der Code passt imo gar nicht. Die Ueberpruefung, ob eine naechstkleinere PLZ vorhanden ist, passt so nicht. Die Ueberpruefung, ob eine naechstkleinere PLZ vorhanden ist, darf erst erfolgen, wenn alle Elemente im Array durchlaufen worden sind und keins uebereinstimmt. Bei dir erfolgt aber alles in einem Durchlauf. Meine Loesung: Eingabe PLZ PLZ_gefunden = falsch FOR zaehler = 1 SOLANGE zaehler kleiner Anzahl PLZ WENN Sonnenstunden[zaehler][0] GLEICH PLZ Ausgabe Sonnenstunden PLZ_gefunden = wahr Schleifenende FOR zaehler = 19 SOLANGE zaehler GROEßER GLEICH 0 WENN Sonnenstunden[zaehler][0] KLEINER PLZ Ausgabe Sonnenstunden PLZ_gefunden = wahr Schleifenende WENN PLZ_gefunden UNGLEICH wahr Ausgabe -1 Zitieren
Abd Sabour Geschrieben 27. Februar 2008 Geschrieben 27. Februar 2008 Da ist glaube ich ein Fehler im Quellcode und zwar bei der Schleife die die naechstkleinere PLZ sucht. Da fangt ihr an bei dem ersten Element im Array (die kleinste PLZ im ganzen Array) zu ueberpruefen, ob die eingegebene PLZ kleiner ist. Das wuerde richtig sein, wenn nicht gefordert waere die naechstkleinere auszugeben. Wir habens in der Schule ausprobiert und mit den zu erwartende Ergebnissen verglichen - hat gepasst. Und im Array mache ich genau das was gefordert ist: Die Nächst kleine PLZ finden, ob man da von vorn oder hinten anfängt ist salopp gesagt Banane, denn ich setze den Wert der nächst kleineren PLZ solange hoch bis ich genau eins unter dem gegebenen PLZ bin dafür steht das "solange <". Zitieren
lupo49 Geschrieben 27. Februar 2008 Geschrieben 27. Februar 2008 Wir habens in der Schule ausprobiert und mit den zu erwartende Ergebnissen verglichen - hat gepasst. Und im Array mache ich genau das was gefordert ist: Die Nächst kleine PLZ finden, ob man da von vorn oder hinten anfängt ist salopp gesagt Banane, denn ich setze den Wert der nächst kleineren PLZ solange hoch bis ich genau eins unter dem gegebenen PLZ bin dafür steht das "solange <". Sorry, stimmt. Grade nochmal selber probiert. Er zaehlt solange hoch bis die PLZ im Array die eingegeben PLZ ueberschreitet und nimmt dann den letzten PLZ-Wert. Zitieren
bademeister Geschrieben 29. Februar 2008 Autor Geschrieben 29. Februar 2008 Abgefahrene aufgabe für magere 10 Pkt meiner Meinung nach... Wenn ich mir die alten Prüfungen von 2006 anguck waren gerade die Pseudocode und SQL-Aufgaben ja noch ein Kinderspiel zu den Aufgaben aus Prüfung Winter 07/08 z.B. Was soll dann Sommer 2008 auf uns zukommen ?! Zitieren
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.