Mitarbeiter
Übung zu Kapitel 3 (Teil 2) am 26. Oktober 2009
Aufgabe 1: Der Tilgungsplan mit interner Tabelle
Strukturiere das Tilgungsplanprogramm der vorherigen Übung in einen Berechnungs- und in einen Ausgabeteil. Zur Zwischenspeicherung der monatlichen Werte soll eine interne Tabelle dienen.
Aufgabe 2: Das kleine EinMalEins mit internen Tabellen
Definiere zwei eindimensionale Tabellen bestehend jeweils aus Zeichenketten. Fülle - jeweils durch "direkte Zuweisung" mittels APPEND Anweisung - die erste Tabelle mit den ausgeschriebenen Zahlenwerten von 1 bis 20 ("eins", "zwei", ..., "zwanzig") und die zweite Tabelle mit den ausgeschriebenen Zahlenwerten von 10 bis 100 in 10er Schritten ("zehn", "zwanzig", ..., "hundert").
Definiere eine dritte zweidimensionale Tabelle bestehend aus Zeichenketten. Fülle die Tabelle mit den ausgeschriebenen Zahlenwerten ("eins", "zwei", ..., "hundert") des kleinen EinMalEins. Setze die Werte möglichst geschickt aus den Werten der beiden ersten Tabellen zusammen. Stilblüten wie "eins und zwanzig" sind dabei durchaus erlaubt.
Gebe mit Hilfe zweier verschachtelter Schleifen die Werte der dritten Tabelle als lineare Liste aus, und stelle dabei jedem ausgeschriebenen Zahlenwert die beiden Faktoren in Ziffernform voran.
Das nachfolgende Pascal-Programm möge die Aufgabenstellung verdeutlichen:
Program EinMalEins;
Type Zahl = String[32];
Const Einser : Array [1..20] of Zahl = (
'eins',
'zwei',
'drei',
'vier',
'fuenf',
'sechs',
'sieben',
'acht',
'neun',
'zehn',
'elf',
'zwoelf',
'dreizehn',
'vierzehn',
'fuenfzehn',
'sechzehn',
'siebzehn',
'achtzehn',
'neunzehn',
'zwanzig');
Zehner : Array [1..10] of Zahl = (
'zehn',
'zwanzig',
'dreissig',
'vierzig',
'fuenfzig',
'sechzig',
'siebzig',
'achtzig',
'neunzig',
'hundert');
Var Tabelle : Array[1..10,1..10] Of Zahl;
Var Zeile, Spalte, Produkt : Word;
Begin
For Zeile := 1 To 10 Do
For Spalte := 1 To 10 Do Begin
Produkt := Zeile * Spalte;
If Produkt <= 20 Then
Tabelle[Zeile,Spalte] := Einser[Produkt]
Else If Produkt Mod 10 = 0 Then
Tabelle[Zeile,Spalte] := Zehner[Produkt Div 10]
Else
Tabelle[Zeile,Spalte] := Einser[Produkt Mod 10]+
'und'+
Zehner[Produkt Div 10]
End;
For Zeile := 1 To 10 Do
For Spalte := 1 To 10 Do
Writeln(Zeile:2,' * ',Spalte:2,' = ',Tabelle[Zeile,Spalte]);
End.