PROGRAM ketten(input,output);

{Das Programm uebernimmt 10 Zeichen  von der Tastatur und erzeugt daraus 10}
{Ausgabezeilen bestehend aus einer zehnfachen Wiederholung eines Zeichens.}
{Dabei wird jede Ausgabezeile um ein Zeichen versetzt ausgegeben.}

CONST ausgabebreite=10;

VAR zeichen1,zeichen2,zeichen3,zeichen4,zeichen5:char;
    zeichen6,zeichen7,zeichen8,zeichen9,zeichen10:char;

{----------------------------------------------------------------------------}
PROCEDURE ausgabe(zahl:integer; zeichen:char);

VAR i:integer;

BEGIN
  IF i<>0 THEN
    BEGIN
      FOR i:=1 TO zahl DO write(zeichen);
      writeln
    END
END;
{----------------------------------------------------------------------------}
PROCEDURE einruecken(anzahl:integer);

CONST zeichen=' ';

VAR i:integer;

BEGIN
  FOR i:=1 TO anzahl DO write(zeichen)
END;
{----------------------------------------------------------------------------}
FUNCTION eingabe:char;

VAR richtig:boolean;
    zeichen:char;

BEGIN
  REPEAT
    richtig:=TRUE;
    write('Geben Sie ein Zeichen ein. (Keine Leerzeichen!) ');
    readln(zeichen);
    IF zeichen <> ' ' THEN eingabe:=zeichen
                      ELSE
                        BEGIN
                          write('Ich sagete doch keine Leerzeichen. ');
                          writeln('Nochmal eingeben.');
                          richtig:=FALSE
                        END;
  UNTIL richtig
END;
{----------------------------------------------------------------------------}

BEGIN
  writeln;writeln;
  writeln('Das Programm gibt 10 Zeichens Ihrer Wahl 10 mal aus.');
  writeln('Die Ausgabe erfolgt dabei versetzt.');
  writeln('Geben Sie bitte die angeforderten Daten ein.');
  writeln;writeln;

  zeichen1 :=eingabe;
  zeichen2 :=eingabe;
  zeichen3 :=eingabe;
  zeichen4 :=eingabe;
  zeichen5 :=eingabe;
  zeichen6 :=eingabe;
  zeichen7 :=eingabe;
  zeichen8 :=eingabe;
  zeichen9 :=eingabe;
  zeichen10:=eingabe;

  writeln;writeln;
  einruecken(0);
  ausgabe(ausgabebreite,zeichen1);
  einruecken(1);
  ausgabe(ausgabebreite,zeichen2);
  einruecken(2);
  ausgabe(ausgabebreite,zeichen3);
  einruecken(3);
  ausgabe(ausgabebreite,zeichen4);
  einruecken(4);
  ausgabe(ausgabebreite,zeichen5);
  einruecken(5);
  ausgabe(ausgabebreite,zeichen6);
  einruecken(6);
  ausgabe(ausgabebreite,zeichen7);
  einruecken(7);
  ausgabe(ausgabebreite,zeichen8);
  einruecken(8);
  ausgabe(ausgabebreite,zeichen9);
  einruecken(9);
  ausgabe(ausgabebreite,zeichen10);
  writeln;writeln;
  writeln('Ende des Programms');
  writeln;writeln

END.

