program ForSchleife;
var i: integer; summe: integer;
BEGIN summe:=0; for i:=1 to 100 do begin summe:= summe + i; end; writeln(i,' ',summe) END.
program WhileSchleife;
var i: integer; summe: integer;
BEGIN summe:=0; i:=0; while (i<100) do begin i:=i+1; summe:= summe + i; end; writeln(i,' ',summe) END.
program RepeatSchleife;
var i: integer; summe: integer;
BEGIN summe:=0; i:=0; repeat i:=i+1; summe:= summe + i; until i=100; writeln(i,' ',summe) END.
program zeichenkette;
var wort: string; laenge,i: integer;
BEGIN readln(wort); laenge := length(wort); for i:= laenge downto 1 do write(wort[i]); writeln; END.
program aufg1;
var Eingabe,Maximum: integer;
BEGIN readln(Eingabe); Maximum:=Eingabe; while Eingabe<>0 do begin if Eingabe > Maximum then Maximum := Eingabe; readln(Eingabe); if Eingabe=0 then writeln('Maximum: ',Maximum); end; if (Maximum=0) then writeln('Leere Eingabefolge') END.
program merge (input, output); { liest ohne Eingabeueberpruefung zwei sortierte Felder mit integer-Zahlen ein; beide Felder werden in einem weiteren Feld sortiert zusammengefuegt; das Ergebnis wird ausgegeben; ist die Eingabe unsortiert, so ist das Ergebnisfeld undefiniert } const FELDLAENGE1 = 5; FELDLAENGE2 = 8; ERGEBNISFELDLAENGE = 13; { FELDLAENGE1 + FELDLAENGE2 } type tFeld1 = array [1..FELDLAENGE1] of integer; tFeld2 = array [1..FELDLAENGE2] of integer; tErgebnisFeld = array [1..ERGEBNISFELDLAENGE] of integer;
var Feld1 : tFeld1; Feld2 : tFeld2; ErgebnisFeld : tErgebnisFeld; i : integer; j : integer; k : integer; begin { sortierte Felder einlesen } writeln ('Bitte', FELDLAENGE1:2, ' Werte des ersten Feldes ', 'sortiert eingeben!'); for i := 1 to FELDLAENGE1 do readln (Feld1[i]); writeln ('Bitte', FELDLAENGE2:2, ' Werte des zweiten Feldes ', 'sortiert eingeben!'); for j := 1 to FELDLAENGE2 do readln (Feld2[j]);
{ Verschmelzungsprozess beginnen } i:=1; j:=1; k:=1; repeat if Feld1[i]>=Feld2[j] then begin ErgebnisFeld[k]:= Feld2[j]; j:=j+1; end else begin ErgebnisFeld[k]:= Feld1[i]; i:=i+1; end; k:=k+1; until (i>FELDLAENGE1) or (j>FELDLAENGE2); if i<=FELDLAENGE1 then for j:=k to ERGEBNISFELDLAENGE do begin ErgebnisFeld[j]:= Feld1[i]; i:=i+1; end else for i:=k to ERGEBNISFELDLAENGE do begin ErgebnisFeld[i]:= Feld2[j]; j:=j+1; end; writeln ('Das Ergebnisfeld ist:'); for k := 1 to ERGEBNISFELDLAENGE do write (ErgebnisFeld[k], ' '); writeln end.
program brueche;
type tBruch = record zaehler: integer; nenner: integer; end; var bruch1, bruch2, bruch3: tBruch;
function ggt(a,b:integer): integer; begin while a<>b do if a>b then a:=a-b else b:=b-a; ggt:=a; end; {ggt}
function kuerzen(b: tBruch): tBruch; var teiler:integer; begin teiler:=ggt(b.zaehler, b.nenner); kuerzen.zaehler:= b.zaehler div teiler; kuerzen.nenner:= b.nenner div teiler; end; {kuerzen}
function addiere(x,y: tBruch) : tBruch; var ergebnis: tBruch; begin if x.nenner<>y.nenner then begin ergebnis.nenner:= x.nenner*y.nenner; ergebnis.zaehler := x.nenner*y.zaehler + x.zaehler*y.nenner; end else begin ergebnis.nenner:= x.nenner; ergebnis.zaehler := x.zaehler + y.zaehler; end ; addiere:=kuerzen(ergebnis); end;
BEGIN
write('Bruch1 '); readln(bruch1.zaehler); readln(bruch1.nenner); write('Bruch2 '); readln(bruch2.zaehler); readln(bruch2.nenner); bruch3:= addiere( bruch1, bruch2); write('Ergebnis: ', bruch3.zaehler, '/', bruch3.nenner); END.
program dreipluseins;
var Zahl: integer;
BEGIN readln(Zahl); while Zahl<>1 do begin if odd(Zahl) then Zahl := Zahl*3+1 else Zahl:= Zahl div 2; writeln(Zahl); end END.
{R+}
program fak;
var n : integer;
function fak(n: integer): integer; begin if n=0 then fak:=1 else fak := fak(n-1) * n;
end;
BEGIN readln(n); writeln('Fakultät: ', fak(n)); END.
program ggtRek;
var a,b : integer;
function ggt(x,y: integer): integer; begin writeln(x,' ',y); if x=y then ggt:=x else if x>y then ggt := ggt(x-y,y) else ggt := ggt(x,y-x) end;
BEGIN readln(a); readln(b); writeln('ggT: ', ggt(a,b)); END.
program hanoiRek;
var n : integer; step:integer;
procedure hanoi(n: integer; von, ueber, nach: string); begin if n=1 then begin step:=step+1; writeln(step,': ',von,'->',nach) end else begin hanoi(n-1,von, nach,ueber); hanoi(1,von,ueber, nach); hanoi(n-1,ueber,von,nach); end;
end;
BEGIN readln(n); step:=0; hanoi(n, 'A', 'B', 'C'); END.