Mitarbeiter
Übung zu Kapitel 3 (Teil 2) am 3. November 2014
Aufgabe 1: Die Tilgungspläne jeweils mit interner Tabelle
Strukturiere die beiden Tilgungsplanprogramme der vorherigen Übung, also sowohl Variante A als auch Variante B, jeweils in einen Berechnungs- und in einen Ausgabeteil. Zur Zwischenspeicherung der monatlichen Werte soll jeweils eine interne Tabelle dienen, und auf die Verwendung von Typdeklarationen soll besonders geachtet werden.
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.