Übung zu Kapitel 3 (Teil 2) am 31. Oktober 2011

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.