program Hermitsche_Polynome (input,output); { Prak5.pas von Rene' Scholz } uses crt; const max_polynom = 20; max_wert = 30; function hermit(n,y :integer) :integer; (* Berechnung des Funktionswertes *) begin if (n=0) or (n=1) then begin if n=0 then hermit:=1; if n=1 then hermit:=2*y; end else hermit:=2*y*hermit(n-1,y) - 2*(n-1)*hermit(n-2,y); end; procedure show_interestings( y:integer); var i:integer; begin clrscr; for i:=0 to max_polynom do begin write('Polynom H [ ',i,' ] (',y,') ist : '); writeln(hermit(i,y) ); writeln; end; writeln; writeln(' Das war wieder Schwerstarbeit ! '); writeln; end; procedure show_polynom( n:integer); var x:integer; begin clrscr; for x:=-max_wert to max_wert do begin writeln(' H [' ,n,' ] (',x,') ist :--> ' ,hermit(n,x) ); writeln; end; writeln; writeln(' Ende der Vorstellung '); writeln; end; procedure show_wert; var grad,x :integer; begin clrscr; writeln; write(' Grad des Polynoms ist ? ');readln(grad); writeln; if grad>=0 then begin write(' und welchen Wert X ? '); readln(x); end; if Grad>=0 then begin writeln;writeln; write(' Ergebnis : '); writeln(hermit(grad,x) ); end else writeln(' Der Grad ist doch nicht negativ !! '); writeln; end; function show_menu:integer; var wa :string; hz,error :integer; begin clrscr; writeln(' *** Berechnung der Funktions-Werte der Hermitschen Polynome ***'); writeln(' by Rene'' Scholz .'); writeln;writeln;writeln; writeln(' Wollen Sie : '); writeln; writeln('1: einen bestimmten Wert eines bestimmten Polynoms berechnen '); writeln; writeln('2: interessante Werte aller Polynome vom Grad <= ', max_polynom,' berechnen '); writeln; writeln('3: ein konstantes Polynom fuer -', max_wert,' < X < ',max_wert,' berechnen ?'); writeln;writeln; writeln('ENDE: --> Hit Enter '); writeln;writeln;writeln;writeln; write(' --> Geben Sie Ihre Wahl bekannt : '); readln(wa); val(wa,hz,error); show_menu:=hz; end; var x,grad,wahl :integer; answer :string; begin { Main } clrscr; repeat wahl:=show_menu; case wahl of 1 : begin repeat clrscr; show_wert; write(' Weiter ? (Y/N) '); readln(answer); until not((answer='Y') or (answer='y')); end; 2 : begin repeat clrscr; write(' Mit welchem Wert X moechten Sie', ' die Polynome testen ? : '); readln(x); show_interestings(x); write(' Nochmal ? (Y/N) '); readln(answer); until not((answer='Y') or (answer='y')); end; 3 : begin repeat clrscr; write(' Welches Polynom H[n] moechten Sie testen ? n : '); readln(grad); show_polynom(grad); write(' Nochmal ? (Y/N) '); readln(answer); until not((answer='Y') or (answer='y')); end; end; { of Case } until wahl=0; { Hier endet das Haupt-Programm } clrscr; writeln('By.'); end.