Universität Ulm - Abteilung Angewandte Informationsverarbeitung
Euer Programm soll diesmal eine quadratische Matrix transponieren.
Dabei soll die Transponierung direkt (durch Vertauschung der
Indizes) auf der ursprünglichen Matrix erfolgen. Der Algorithmus
sollte unabhängig von der Dimension der Matrix sein (Was das genau
heißt wird weiter unten erklärt)! Die Zahlenwerte sollen dabei
von der Tastatur eingelesen werden können. Anschließend sollen
die Werte der transponierter Matrix ausgegeben werden!
Transponieren bedeutet also, die Werte der Matrix an
der Diagonalen zu spiegeln, wie das nachfolgende
Zahlenbeispiel zeigt (Die Werte werden quasi an der
Diagonalen 11, 5, 23 gespiegelt):
HINWEISE ZUM LÖSEN DER AUFGABE:
Folgende Datenstruktur kann/soll(te) verwendet werden:
CONST length = 4; (* So wird ein 2-dimensionales Array definiert *) TYPE Matrix = ARRAY length,length OF INTEGER; VAR matrix: Matrix; i, j: INTEGER;
Was bedeutet nun, daß der Algorithmus unabhängig
von der Dimension sein soll? Gemeint ist hier,
daß wenn Ihr die Konstante length z.B. von 4
auf 3 reduziert am Algorithmus selbst keine
Veränderungen gemacht werden sollten!
Beispiel: Wie kann ein 2-dimensionales Array
unabhängig von der Dimension durchlaufen werden
(z.B. um die Array-Werte einzugeben)? Hier der
Programmcode (und zugleich erster Teil der
Lösung):
i := 0; (* erster Schleifenzähler *) WHILE i < length DO j := 0; (* zweiter Schleifenzähler *) WHILE j < length DO Read.Int(matrix[i,j]); (* die Werte einlesen *) INC(j); END; INC(i); END;
Energy 2000 | Power Extra | Active x | |
Sojaeiweiß | 75% | 60% | 68% |
Magermilchpulver | 22% | 35% | 28% |
Vitaminzusätze | 3% | 5% | 4% |
Der Firma liegen Aufträge von verschiedenen Sportfachgeschäften vor.
Die Bestellungen vom letzten Freitag hat die Sekretärin in
einer Tabelle zusammengefasst (Bestellmengen in kg).
Sport Krauss | Sport Sohn | Sport Abt | Olympia | |
Energy 2000 | 200 | 150 | 150 | 250 |
Power Extra | 150 | 200 | 200 | 200 |
Active x | 100 | 200 | 150 | 100 |
Aus den Tabellen ist nun ersichtlich, daß z.B. das Sportfachgeschäft
Sport Sohn 0.75 * 150 + 0.6 * 200 + 0.68 * 200 = 368.50 kg
Sojaeiweiß benötigt!
Euer Programm sollte nun so gestaltet sein, daß die
Bestellmengen eines Sportfachgeschäfts anhand eines
Vektors eingegeben werden können. Anschließend soll
errechnet werden, wieviel kg der einzelnen Bestandteile
für ein Sportfachgeschäft benötigt werden.
Beispielrechnung für das Sportfachgeschäft Sport Sohn:
Für die Matrixeinträge muß eine entsprechende 2-dimensionale Arraystruktur
im Programm vorhanden sein, wobei die Einträge bereits im Programm fest
vorgegeben sein sollen.
Für die Eingabe sowie für die Ausgabe muß eine 1-dimensionale Arraystruktur
im Programm vorhanden sein. Die Bestellmengen sollen dabei über die Tastatur
eingelesen werden. Die Mengen der Bestandteile sollen in einem Vektor
abgespeichert und anschließend ausgegeben werden!
Viel Erfolg!