program aufg1;
uses crt; var zahl: integer; max: integer;
BEGIN readln(zahl); max:=zahl; while zahl<> 0 do begin if zahl > max then max:= zahl; readln(zahl); end; if max<>0 then writeln('Max: ', max) else writeln('leere Eingabenfolge') 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; for k:= 1 to ERGEBNISFELDLAENGE do begin if i>FELDLAENGE1 then begin ErgebnisFeld[k]:= Feld2[j]; j:=j+1; end else if j>FELDLAENGE2 then begin ErgebnisFeld[k]:= Feld1[i]; i:=i+1 end else if Feld1[i]<Feld2[j] then begin ErgebnisFeld[k]:= Feld1[i]; i:=i+1; end else begin ErgebnisFeld[k]:= Feld2[j]; j:=j+1; end; end; {Verschmelzungsprozess}
writeln ('Das Ergebnisfeld ist:'); for k := 1 to ERGEBNISFELDLAENGE do write (ErgebnisFeld[k], ' '); writeln end.
program MatrixSummen (input, output); { ueberprueft bei einer Matrix von integer-Zahlen, ob jede Spaltensumme groesser ist als die Zeilensumme einer angegebenen Zeile }
const ZEILENMAX = 3; SPALTENMAX = 4;
type tMatrix = array [1..ZEILENMAX, 1..SPALTENMAX] of integer;
var Matrix : tMatrix; ZeilenNr, SpaltenNr, Eingabe : integer;
function ZeilenSummeKleiner (var inMatrix : tMatrix; inZeilenNr : integer) : boolean; { ergibt true, falls die Summe aller Elemente mit dem uebergebenen Zeilenindex kleiner ist als jede Spaltensumme } var zeilenSumme, spaltenSumme: integer; i,j: integer; begin zeilenSumme:=0; for i:=1 to SPALTENMAX do zeilenSumme:= zeilenSumme + inMatrix[inZeilenNr, i]; j:=1; repeat spaltenSumme:=0; for i:=1 to ZEILENMAX do spaltenSumme:= spaltenSumme+ inMatrix[i, j]; j:=j+1; until (spaltenSumme<= zeilenSumme) or (j>SPALTENMAX); if spaltenSumme>zeilenSumme then ZeilenSummeKleiner:=true else ZeilenSummeKleiner:=false; end;{ ZeilenSummeKleiner }
begin { Matrixelemente einlesen } for ZeilenNr := 1 to ZEILENMAX do for SpaltenNr := 1 to SPALTENMAX do read (Matrix[ZeilenNr, SpaltenNr]); repeat write ('Welche Zeile soll ueberprueft werden ? (1..', ZEILENMAX, ') (anderes = Ende) '); readln (Eingabe); if (Eingabe > 0) and (Eingabe <= ZEILENMAX) then begin ZeilenNr := Eingabe; { hier wird die Funktion ZeilenSummeKleiner aufgerufen } if ZeilenSummeKleiner (Matrix,ZeilenNr) then writeln ('Jede Spaltensumme ist groesser als die ', 'Zeilensumme der ', ZeilenNr, '. Zeile.') else writeln ('Es sind nicht alle Spaltensummen groesser als die ', 'Zeilensumme der ', ZeilenNr, '. Zeile.') end; until (Eingabe <= 0) or (Eingabe > ZEILENMAX) end. { MatrixSummen }
program blumen;
type tFarbe = (rot, blau, gelb); tBlumenzahl = array [tFarbe] of integer; var i: integer; Blumenzahl : tBlumenzahl; farbe: tFarbe;
BEGIN for farbe := rot to gelb do Blumenzahl[farbe]:=0; for farbe := rot to gelb do writeln(farbe,': ',Blumenzahl[farbe]); END.
program fak;
var i : integer; prod: real; BEGIN {for-Schleife} prod:=1; for i:=1 to 100 do prod:=prod*i; writeln('Fakultaet: ', prod); {while-Schleife} prod:=1; i:=1; while i<=100 do begin prod:=prod*i; i:=i+1 end; {while} writeln('Fakultaet: ', prod); {repeat-Schleife} prod:=1; i:=1; if i<=100 then repeat prod:=prod*i; i:=i+1; until not(i<=100); writeln('Fakultaet: ', prod); END.
program fakFunktion;
var i : integer; j : integer; k : integer;
function fakultaet(i: integer): integer; {berechnet die Fakultät von i} var j: integer; ergebnis: integer; begin ergebnis:=1; for j:= 1 to i do ergebnis:= ergebnis*j; fakultaet:= ergebnis; j:=7; k:=7; end;
BEGIN readln(i); writeln(i,' ', fakultaet(i)); writeln(k); END.
program gauss;
var i : integer; summe: integer; BEGIN summe:=0; for i:=1 to 100 do summe:=summe+i; writeln('Summe: ', summe); END.
program matrixMult;
type tmatrix = array[1..2,1..2] of integer;
var i ,j ,k : integer; m1, m2, m3: tmatrix;
BEGIN for i:=1 to 2 do for j:=1 to 2 do readln(m1[i,j]); for i:=1 to 2 do for j:=1 to 2 do readln(m2[i,j]); for i:= 1 to 2 do begin for j:= 1 to 2 do begin m3[i,j]:=0; for k:= 1 to 2 do m3[i,j] := m3[i,j] + m1[i,k]*m2[k,j]; end; end; for i:=1 to 2 do begin for j:=1 to 2 do write(m3[i,j],' '); writeln(); end; END.
program pali;
uses crt; var i: integer; wort : string; gespiegelt: string;
BEGIN readln(wort); for i:=length(wort) downto 1 do gespiegelt := gespiegelt + wort[i]; writeln(gespiegelt); if gespiegelt=wort then writeln('ist ein Palindrom') else writeln('kein Palindrom'); END.
program person;
type tgeb = record tag: 1..31; monat: 1..12; jahr: integer; end; tperson = record name: string; vorname: string; geb: tgeb; end; tpersonFeld = array[1..100] of tperson; var person1 : tperson; personen : tpersonFeld;
BEGIN person1.name:= 'Maier'; person1.vorname:= 'Otto'; person1.geb.tag := 1; person1.geb.monat:= 12; person1.geb.jahr:= 1954; personen[1] := person1; END.
program umdrehen;
uses crt; var i: integer; wort : string;
BEGIN readln(wort); for i:=length(wort) downto 1 do write(wort[i]); writeln(); END.