Letöltés: fa_cel.dpr program muveletek; {$A+,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O+,P+,Q+,R+,S-,T-,U+,V+,W+,X+,Y+,Z1} {$MINSTACKSIZE $00004000} {$MAXSTACKSIZE $00100000} {$IMAGEBASE $00400000} {$APPTYPE CONSOLE} uses SysUtils, Math; Const ben = 3; bet : array [1..ben] of integer = (5,6,7); bec = 42; Var x,i : integer; s : string; Procedure muvelet(ertek,szint:integer;hogy:string); Var z : array [1..4] of integer; Begin If szint=ben then Begin z[1]:=ertek + bet[szint]; z[2]:=ertek - bet[szint]; z[3]:=ertek * bet[szint]; z[4]:=ertek div bet[szint]; If abs(x-bec)>abs(bec-z[1]) then Begin x:=z[1]; s:=hogy+'+'+IntToStr(bet[szint]); End; If abs(x-bec)>abs(bec-z[2]) then Begin x:=z[2]; s:=hogy+'-'+IntToStr(bet[szint]); End; If abs(x-bec)>abs(bec-z[3]) then Begin x:=z[3]; s:=hogy+'*'+IntToStr(bet[szint]); End; If abs(x-bec)>abs(bec-z[4]) then Begin x:=z[4]; s:=hogy+'/'+IntToStr(bet[szint]); End; End else Begin muvelet(ertek + bet[szint],szint+1,hogy+'+'+IntToStr(bet[szint])+')'); muvelet(ertek - bet[szint],szint+1,hogy+'-'+IntToStr(bet[szint])+')'); muvelet(ertek * bet[szint],szint+1,hogy+'*'+IntToStr(bet[szint])+')'); muvelet(ertek div bet[szint],szint+1,hogy+'/'+IntToStr(bet[szint])+')'); End; End; Procedure kiir; Begin Writeln(bec,'-hez a legkozelebbi eloallithato ertek: ',#13#10,s,'=',x); Writeln('A ,,tavolsag'''': ',abs(bec-x)); Readln; End; begin s:=''; For i:=1 to ben-2 do s:=s+'('; s:=s+IntToStr(bet[1]); muvelet(bet[1],2,s); kiir; end. |