Witam. Mam wielką prośbę. Mógłby ktoś połączyć te dwa programy w jeden oraz te rzeczy które robić się w main wsadzić do procedury? W Pascalu bardzo dawno nic nie robiłem a bardzo tego potrzebuję. Dla sprawnego w tym języku powinno to zająć parę minut, bo kody programów nie są skomplikowane.
uses
SysUtils;
var i:Byte;
a,b,E,xp,x0,Fxp,Fx0:real48;
function FNC(x:real48):real48;
begin
FNC:=EXP(X)-10*x+7;
end;
function POCH1(x:Real48):Real48;
Begin
POCH1:=EXP(x)-10;
End;
function POCH2(x:Real48):Real48;
Begin
POCH2:=EXP(x);
End;
begin
writeln('Rozwiazywanie rownan nieliniowych f(x)=0');
writeln('Metoda statycznych (met Newtona)');
writeln;
writeln('Dane wejsciowe');
writeln('Przedzial poszukiwan');
write('a=');readln(a);
write('b=');readln(b);
writeln;
writeln('Dokladnosc obliczen');
write('E=');readln(E);
writeln;
//wybor punktu startowego
//sprawdzaanie zalozen;
if FNC(a) * FNC(b) > 0
THEN x0:=a
ELSE x0:=b;
if POCH1(x0)=0 then
begin
writeln('Nie mozna zastosowac metody stycznych');
readln;
end
else
begin
i:=0;
repeat
inc(i);
xp:=x0-FNC(x0)/POCH1(x0);
Fxp:=FNC(xp);
Fx0:=FNC(x0);
writeln('i=', i:2,' x0= ', x0:10:6,' Fxo=', Fx0:10:6, ' xp= ', xp:10:6,' Fxp=', Fxp:10:6);
x0:=xp;
until ABS(Fxp)<=E;
writeln;
writeln('Wyniki');
writeln('Pierwiastek x=',xp:9:6);
writeln('Wartosc funkcji f(x)=',Fxp:12:8);
writeln('Liczba iteracji i=',i);
readln;
readln;
end;
END.
uses
SysUtils;
var i:SmallInt;
a,b,E,xp,pp,kp,Fa,Fb,Fx,Fxp,Fpp:real48;
function FNC(x:real48):real48;
begin
//FNC:=SQRt(SIN(X))+LN(SQR(x)+SQR(SQR(x)));
FNC:=x*SQR(X)-10*x-5;
end;
begin
writeln('Rozwiazywanie rownan nieliniowych d(x)=0');
writeln('Metoda bisekcji (przedzialu polowkowego)');
writeln;
writeln('Dane wejsciowe');
writeln('Przedzial poszukiwan');
write('a=');readln(a);
write('b=');readln(b);
writeln;
writeln('Dokladnosc obliczen');
write('E=');readln(E);
writeln;
Fa:=FNC(a);
Fb:=FNC(b);
//sprawdzaanie zalozen;
if Fa*Fb >0 then
begin
writeln('NIE MOZNA ZASTOSOWAC METODY BISEKCJI');
readln;
halt
end;
if Fa=0 then
begin
writeln('Rozwiazanie dokladne');
writeln('Pierwiastek x=',a:9:6);
halt
end;
if Fb=0 then
begin
writeln('Rozwiazanie dokladne');
writeln('Pierwiastek x=',b:9:6);
readln;
halt
end;
//iteracyjne zmniejszanie przedzialu
i:=0;
pp:=a;
kp:=b;
repeat
i:=i+1; //inc(i)
xp:=(pp+kp)/2;
Fxp:=FNC(xp);
Fpp:=FNC(pp);
if Fpp*Fxp<0 then
begin
kp:=xp;
end
else
begin
pp:=xp;
end;
until (kp-pp<=E) or (Fxp=0);
//wyswietlenie wynikow
writeln;
writeln('Wyniki');
writeln('Pierwiastek x=',xp:9:6);
writeln('Wartosc funkcji f(x)=',Fxp:12:8);
writeln('Liczba iteracji i=',i);
readln;
readln;
end.