program Project1; {$APPTYPE CONSOLE} uses Classes, SysUtils, Math; function IntCustomSort(List: TStringList; Index1, Index2: Integer) : Integer; var i1, i2: Integer; begin i1 := Integer(List.Objects[Index1]); i2 := Integer(List.Objects[Index2]); Result := 0; if i1 < i2 then Result := -1 else if i1 > i2 then Result := 1 end; var tn1, tn, g, eps, e1: Double; i, v, j, vn: Integer; lst: TStringList; begin Randomize; Write('Enter target value: '); Readln(tn1); Write('Array: '); g := 1; j := 0; vn := 0; eps := 1e38; tn := Abs(tn1); lst := TStringList.Create; for i := 0 to 9 do begin v := Random(21) - 10; Write(v, ' '); if v > 0 then begin e1 := Abs(tn - v); if e1 < eps then begin eps := e1; vn := v; end; end; end; for i := 10 to 19 do begin v := Random(21) - 10; Write(v, ' '); if v > 0 then begin e1 := Abs(tn - v); if e1 < eps then begin eps := e1; vn := v; end; end; if v mod 2 = 0 then begin g := g * v; inc(j); end; end; for i := 20 to 38 do begin v := Random(21) - 10; Write(v, ' '); if v > 0 then begin lst.AddObject(IntToStr(v), TObject(v)); e1 := Abs(tn - v); if e1 < eps then begin eps := e1; vn := v; end; end; end; Writeln; Writeln('Value of the closest element to an absolute value of ', tn1, ' is ', vn); try g := Power(g, 1 / j); except g := 0 end; if g = 0 then Writeln('Gn of second quarter can not be calculated') else Writeln('Gn of second quarter is ', g); lst.CustomSort(IntCustomSort); Write('Sorted second half of the Array: '); for i := 0 to lst.Count - 1 do Write(lst[i], ' '); lst.Free; Writeln; end. |