Programozás‎ > ‎Feladatok‎ > ‎Célérték keresés‎ > ‎Megoldás‎ > ‎

fa_cel.dpr

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.
ċ
fa_cel.dpr
(2k)
Gábor Fehér,
2012. márc. 4. 7:27
Comments