Einführung
in die imperative Programmierung
WS 2015/16
Klausur 2014 Aufg3
program PascalDreieck;
type
tRefListe = ^tListe;
tListe = record
wert:integer;
next:tRefListe
end;
var
Liste,zeiger,neu, NeuZeile : tRefListe;
function naechsteZeile(inListe: tRefListe) : tRefListe;
var
zeigerneu, zeigeralt, neuerKnoten, zeigerneuLetzter: tRefListe;
vorWert:integer;
begin
vorWert:=0;
zeigeralt:= inListe;
zeigerneu:=nil;
while zeigeralt<>nil do
begin
new(neuerKnoten);
neuerKnoten^.wert:= vorWert + zeigeralt^.wert;
neuerKnoten^.next:=nil;
if zeigerneu=nil then
begin
zeigerneu:=neuerKnoten;
zeigerneuLetzter:= neuerKnoten;
end
else
begin
zeigerneuLetzter^.next:= neuerKnoten;
zeigerneuLetzter:= neuerKnoten;
end;
vorWert := zeigeralt^.wert;
zeigeralt:= zeigeralt^.next;
end; {while}
{letztes Element erzeugen}
new(neuerKnoten);
zeigerneuLetzter^.next := neuerKnoten;
neuerKnoten^.wert := 1;
neuerKnoten^.next := nil;
naechsteZeile := zeigerneu;
end;
procedure drucken(inListe: tRefListe);
var zeiger: tRefListe;
begin
zeiger:= inListe;
while zeiger<> nil do
begin
write(zeiger^.wert, ' ');
zeiger:= zeiger^.next;
end;
writeln();
end;
BEGIN
new(Liste);
Liste^.wert:=1;
Liste^.next:=nil;
zeiger:=Liste;
new(neu);
neu^.wert:=4;
neu^.next:=nil;
zeiger^.next:=neu;
zeiger:= neu;
new(neu);
neu^.wert:=6;
neu^.next:=nil;
zeiger^.next:=neu;
zeiger:= neu;
new(neu);
neu^.wert:=4;
neu^.next:=nil;
zeiger^.next:=neu;
zeiger:= neu;
new(neu);
neu^.wert:=1;
neu^.next:=nil;
zeiger^.next:=neu;
zeiger:= neu;
write(' ');
drucken(Liste);
neuZeile := naechsteZeile(Liste);
drucken(neuZeile);
END.