Está en la página 1de 2

bungsaufgaben 4

(Lerninhalte: arrays, Schleifen, formatierte Datei-Ein-/Ausgabe)

1. Schreiben Sie ein Programm zur Multiplikation einer 3x3-Matrix M mit einem 3-ele-
mentigen Spaltenvektor a zur Berechnung des Ergebnisvektors b :

b= Ma
Die Matrix M soll im Programm fest vorgegeben sein, der Vektor
a soll von stdin
eingelesen werden. Verwenden Sie folgendes Testbeispiel:


2.1 0.7 0.2 7.3
b = 3.4 1.3 4.0 0.8
2.3 3.7 1.1 2.5
Geben Sie die Vektorgleichung mit Eingabe und Ergebnis formatiert ber drei Zeilen so
formatiert nach stdout aus:
Matrix-/Vektor-Multiplikation
[ 2.1 0.7 0.2 ] ( 7.3 ) ( 15.3 )
[ 3.4 1.3 4.0 ] * ( -0.8 ) = ( 33.8 )
[ 2.3 3.7 1.1 ] ( 2.5 ) ( 16.6 )

2. Schreiben Sie das Programm aus der 5. Aufgabe der bungsaufgaben 2 (Mittelwertbe-
rechnung) so um, dass die n eingelesenen Zahlen zustzlich in einem array abgespeichert
werden, prfen Sie dabei auf Bereichsberschreitung des arrays.
Verwenden Sie als Eingabe eine der zur Verfgung gestellten Dateien mit Zufallszahlen
random_uniform.dat: 10000 gleichverteilte Zufallszahlen [1,1000],
random_normal.dat: 10000 normalverteilte Zufallszahlen [1,1000].
Beachten Sie dabei, dass die Eingabesequenz nun nicht mehr wie in A2-4 mit 0 beendet
wird, sondern alle Zahlen bis EOF gelesen werden sollen.
Bestimmen und geben Sie formatiert aus: die Anzahl n der gelesenen Zahlen, das kleinste
und das grte Element, den Mittelwert m und die Standardabweichung s.


n n

xi x im2
m= i =1 s= i =1
n n

3. Schreiben Sie das Programm der o. g. 1. Aufgabe so um, dass mehrere Vektoren mit der-
selben Matrix multipliziert werden knnen. Die Dimension DIM der quadratischen
(DIMxDIM) Matrix und der Vektoren soll zwar als Konstante festgelegt, aber ohne nde-
rungen am restlichen Programm nderbar sein. Die Koeffizienten der Eingabe-Matrix
sind nicht mehr fest einprogrammiert, sondern werden wie auch die Eingabe-Vektoren
von einer Datei eingelesen.
Dazu gelte folgende Konvention: Auf der Eingabedatei stehen zunchst DIM Zeilen (fr
die DIM Matrixzeilen) mit je DIM double-Werten (fr die Matrix-Spalten). Dann folgen be-
liebig viele Zeilen (entsprechend der Anzahl der Vektoren) mit je DIM double-Werten fr
jeden Eingabe-Vektor.
Testen Sie Ihr erweitertes Programm zunchst mit einer (per Editor selbst erstellten) Ein-
gabedatei, die den Werten aus o. g. Aufgabe 1 entspricht. Erweitern Sie anschlieend die
Eingabedatei auf mindestens 6 Vektoren und geben Sie die Ergebnisse hnlich der in
Aufgabe 1 entwickelten Formatierung kompakt aus. Testen Sie auerdem, ob Ihr Pro-
gramm nach nderung auf DIM=4 mit entsprechend erweiterter Eingabedatei korrekt ar-
beitet.

Informatik 1, TI-B bungsaufgaben 4


Dipl.-Ing. H. Radners Seite 1 von 2
4. Schreiben Sie das Programm aus der o. g. 2. Aufgabe so um, dass ein Histogramm der
eingelesenen Zahlen ausgegeben wird. Klassifizieren sie die eingelesenen Werte dazu in
z. B. 25 gleich groe Intervalle und geben Sie die Anzahl der in jedem Intervall gelege-
nen Eingabewerte aus. Visualisieren Sie die Anzahlen zustzlich durch '*'-Reihen pro-
portionaler Lnge, so dass Sie in etwa folgende Ausgabe erzeugen:
Es wurden 10000 Zahlen eingelesen.
Histogramm - Anzahl Werte je Intervall
======================================
Intervallgroesse = 40
Nr.(von - bis): Anzahl
------------------------
0.( 1- 40): 2 - *
1.( 41- 80): 3 - *
2.( 81- 120): 7 - *
3.( 121- 160): 11 - *
4.( 161- 200): 42 - **
5.( 201- 240): 100 - *****
6.( 241- 280): 184 - **********
:
12.( 481- 520): 1295 - ************************************************************
13.( 521- 560): 1272 - ***********************************************************
14.( 561- 600): 1022 - ************************************************
:
23.( 921- 960): 1 - *
24.( 961-1000): 1 - *
Kontrollsumme: 10000

(optionale) Zusatzaufgaben
5. Schreiben Sie das Programm aus der o. g. 2. Aufgabe so um, dass die statistischen Kenn-
werte Minimum, Maximum, Mittelwert und Standardabweichung fr 6 Teilmengen der
Schrittweiten 1, 2, 3, 5, 10, 25 (also a) fr jedes Element (wie oben), b) fr jedes zweite
Element, c) fr jedes dritte Element, d) fr jedes fnfte Element, usw.) aus dem Feld der
Eingabewerte berechnet werden. Geben Sie diese zu Vergleichszwecken (sind die
Eingabewerte zufllig verteilt, sollten die Kennwerte verschiedener Schrittweiten nur
wenig streuen) tabellarisch so aus, dass Sie in etwa diese Ausgabe erzeugen:
Es wurden 10000 Zahlen eingelesen.
Schrittweite | 1 | 2 | 3 | 5 | 10 | 25 |
---------------+----------+----------+----------+----------+----------+----------+
Minimum | 5 | 5 | 5 | 5 | 5 | 5 |
Maximum | 1000 | 1000 | 1000 | 1000 | 1000 | 998 |
Mittelwert | 501.49 | 499.81 | 500.17 | 497.52 | 499.46 | 485.96 |
Standardabw. | 287.99 | 286.96 | 289.42 | 289.47 | 284.15 | 276.16 |

6. Schreiben Sie ein Programm, das zunchst eine der Dateien aus 2. in ein Feld einliest und
anschlieend die NUMSORT (z.B. NUMSORT=50) kleinsten Zahlen daraus ermittelt. Dies soll
durch eine Teil-Sortierung des Feldes erfolgen. Implementieren Sie dazu den selection-
sort Algorithmus (Sortieren durch direkte Auswahl):
Mittels zweier ineinander geschachtelter for-Schleifen wird in der inneren Schleife das
jeweilige Minimum des ('hinteren') Restfeldes ermittelt und dieses mit dem akt. Element
der ueren Schleife (nach 'vorn') vertauscht. Die uere Schleife luft dabei vom ersten
bis zum NUMSORT-ten Feldelement, die innere Schleife jeweils von demjenigen der ueren
Schleife + 1 bis zum letzten Feldelement.
Geben Sie die ersten NUMSORT Elemente des Feldes vor und nach der Sortierung formatiert
mit 15 Zahlen pro Zeile nach stdout aus.

Informatik 1, TI-B bungsaufgaben 4


Dipl.-Ing. H. Radners Seite 2 von 2