Pseudocode, PAP, Struktogramm
Vorgehensweise
- Aufgabenstellung lesen & verstehen
- Was ist der Zweck des Programms?
- Welche Eingaben, Verarbeitungen und Ausgaben gibt es?
- Eingaben Identifizieren
- Was bekommt die Funktion als Parameter oder von außen übergeben?
- Verarbeitung logisch zerlegen
- Rechenschritte, Bedingungen, Schleifen? Was passiert wann?
- Gibt es Rechenvorschriften wie "abwechselnd mit 1 und 3 gewichten"? Notieren!
- Ergebnis/Ausgabe festlegen
- Was soll am Ende zurückgegeben oder angezeigt werden?
Aufgaben
Für den Onlineversand sollen die Weinflaschen mit Barcode-Aufkleber versehen werden, der nähere Informationen zum Wein enthält. Der Barcode besteht aus zehn Ziffern.
123-456-78-9-p
- Ziffern 1 bis 3: Schlüssel für Region
- Ziffern 4 bis 6: Schlüssel für Rebsorte
- Ziffern 7 - 8: Jahrgang
- Ziffer 9: Geschmacksangabe (lieblich, halbtrocken, trocken ...)
- Dazu kommt an der 10. Stelle eine Prüfziffer p.
Die Prüfziffer soll nach folgender Beschreibung errechnet werden:
- Die einzelnen Ziffern werden alternierend gewichtet von Links nach Rechts mit 1 und 3:
- Ziffer_1 x 1, Ziffer_2 x 3 .... Ziffer_9 * 1
- Die 9 gewichteten Produkte werden addiert.
- Die Prüfziffer ist die Differenz der Summe zum nächstkleineren Vielfachen von 10 (modulo 10)
function ermittlePrüfziffer(int[] barcode)
{
int pruefziffer = 0
für i = 0; i < barcode.laenge; i++
{
wenn (i % 2 = 0)
{
pruefziffer += barcode[i] * 3
} sonst
{
pruefziffer += barcode[i] * 1
}
}
pruefziffer = (10 - (pruefziffer % 10)) % 10
rueckgabe pruefziffer
}
Alle aktuell vorhandenen Barcodes der Weine und deren Jahresabsatz sind in einer zweidimensionalen Tabelle "Absatz" in folgender Form gespeichert:
Region |
Rebsorte |
Jahrgang |
Geschmacksrichtung |
Absatz in Stk. |
123 |
456 |
78 |
9 |
46 |
333 |
125 |
20 |
4 |
998 |
... |
... |
... |
Erstellen Sie auf der Folgeseite eine Funktion "sucheTopseller", die für ein übergebendes Kriterium (0 = Region; 1 = Rebsorte, 2 = Jahrgang; 3 = Geschmacksrichtung) und einen entsprechenden Vorgabewert (z.B. 123 für eine bestimmte Region) den umsatzstärksten Wein ermittelt und den Barcode dieses Weines als Zeichenkette ohne Prüfziffer zurückliefert. Das zweidimensionale Array "Absatz" steht in der Funktion "sucheTopseller" zur Verfügung. Gehen Sie davon aus, dass alle Weine einen unterschiedlichen, positiven Absatz haben.
Hinweis: Für das Zusammenfügen von Zeichenketten kann der + Operator verwendet werden. Gemischte Ausdrücke vom Typ String und Ganzzahl sind möglich.
FUNKTION sucheTopseller(int kriterium, int vorgabe) : STRING
int barcode = 0;
int maxAbsatz = -1;
int maxIndex = -1
VON i = 0 BIS Absatz.laenge
WENN Absatz[i][kriterium] == vorgabe und Absatz[i][4] > maxAbsatz //
maxAbsatz = Absatz[i][4]
maxIndex = i
ENDE WENN
ENDE VON
barcode = barcode + Ansatz[maxIndex][i]
VON i = 1 BIS 3
barcode = barcode + "-" + Absatz[maxIndex][i]
ENDE VON
RUECKGABE barcode
ENDE FUNKTION