program egyenlet_gyoke_kozelitessel; {uses crt;} uses wincrt; var c,eredmeny_koz, int1, int2, int_koz, alfa, eredmeny1, eredmeny2 : real; i : integer; function signum(x : real) : shortint; begin if 0>x then signum := -1; if 0=x then signum := 0; if x>0 then signum := 1; end; function egyenlet(x : real) : real; begin egyenlet := x/2 - sin(x/2)*cos(x/2) - 1; end; procedure kozelit(pontossag, int1, int2 : real; var gyok : real); var eredmeny1, eredmeny2, eredmeny_koz, int_koz : real; begin repeat int_koz := (int1+int2)/2; eredmeny1 := egyenlet(int1); eredmeny2 := egyenlet(int2); eredmeny_koz := egyenlet(int_koz); if signum(eredmeny_koz)=signum(eredmeny1) then begin int1 := int_koz; int2 := int2; end; if signum(eredmeny_koz)=signum(eredmeny2) then begin int1 := int1; int2 := int_koz; end; if signum(eredmeny_koz) = 0 then begin {!} int1 := int_koz; int2 := int_koz; end; until abs(int1-int2)<=pontossag; gyok := int_koz; end; Begin {clrscr;} kozelit(1E-11,0,pi,alfa); writeln('Alfa = ',alfa:0:10,' rad'); c := sqrt(20000-2*100*100*cos(alfa)); writeln('A kor kerulete: ',200*pi:0:2); writeln('A "C" oldal hossza: ',c:0:2); writeln('Az alfahoz tartozo koriv: ',alfa*100:0:2); writeln('A kerites hossza: ',200*pi-100*alfa+c:0:2 ); End.