Zum Inhalt springen

Pseudocode AP Winter 07/08 AE


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

.. 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

...

...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. :D

Ich bin auch nicht so der Programmierer (die von der IHK anscheinend auch nicht).

Link zu diesem Kommentar
Auf anderen Seiten teilen

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:.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D !

Link zu diesem Kommentar
Auf anderen Seiten teilen

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


Link zu diesem Kommentar
Auf anderen Seiten teilen

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 <".

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

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...