Veröffentlicht 20. Februar 200817 j 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
20. Februar 200817 j 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.
23. Februar 200817 j 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?
24. Februar 200817 j .. 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 ... ...
24. Februar 200817 j 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.
24. Februar 200817 j 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.
24. Februar 200817 j 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:
24. Februar 200817 j 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).
25. Februar 200817 j 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).
25. Februar 200817 j 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!
25. Februar 200817 j 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 ...
25. Februar 200817 j Anbei die Lösung - in Java implementiert - kann ja zu Pseudocode abstrahiert werden . MFG Abd Sabour
25. Februar 200817 j 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?
25. Februar 200817 j 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:.
26. Februar 200817 j 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
26. Februar 200817 j 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 !
27. Februar 200817 j 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
27. Februar 200817 j 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 <".
27. Februar 200817 j 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.
29. Februar 200817 j 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 ?!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.