bug fix issue #38
This commit is contained in:
parent
fd2ffcdf44
commit
b4094c0b7e
|
|
@ -580,16 +580,18 @@ function ClientRectangle: System.Drawing.Rectangle;
|
|||
//------------------------------------------
|
||||
//// Рисование графиков функций
|
||||
//------------------------------------------
|
||||
/// Рисует график функции f на отрезке [a,b] в прямоугольнике, задаваемом координатами x1,y1,x2,y2,
|
||||
procedure Draw(f: Func<real,real>; a,b: real; x1,y1,x2,y2: integer);
|
||||
/// Рисует график функции f на отрезке [a,b] в прямоугольнике r
|
||||
procedure Draw(f: Func<real,real>; a,b: real; r: System.Drawing.Rectangle);
|
||||
/// Рисует график функции f на отрезке [-5,5] в прямоугольнике r
|
||||
procedure Draw(f: Func<real,real>; r: System.Drawing.Rectangle);
|
||||
/// Рисует график функции f на отрезке [a,b] на полное графическое окно
|
||||
procedure Draw(f: Func<real,real>; a,b: real);
|
||||
/// Рисует график функции f на отрезке [-5,5] на полное графическое окно
|
||||
procedure Draw(f: Func<real,real>);
|
||||
/// Рисует график функции f, заданной на отрезке [a,b] по оси абсцисс и на отрезке [min,max] по оси ординат, в прямоугольнике, задаваемом координатами x1,y1,x2,y2,
|
||||
procedure Draw(f: real -> real; a,b,min,max: real; x1,y1,x2,y2: integer);
|
||||
/// Рисует график функции f, заданной на отрезке [a,b], в прямоугольнике, задаваемом координатами x1,y1,x2,y2,
|
||||
procedure Draw(f: real -> real; a,b: real; x1,y1,x2,y2: integer);
|
||||
/// Рисует график функции f, заданной на отрезке [a,b], в прямоугольнике r
|
||||
procedure Draw(f: real -> real; a,b: real; r: System.Drawing.Rectangle);
|
||||
/// Рисует график функции f, заданной на отрезке [-5,5], в прямоугольнике r
|
||||
procedure Draw(f: real -> real; r: System.Drawing.Rectangle);
|
||||
/// Рисует график функции f, заданной на отрезке [a,b], на полное графическое окно
|
||||
procedure Draw(f: real -> real; a,b: real);
|
||||
/// Рисует график функции f, заданной на отрезке [-5,5], на полное графическое окно
|
||||
procedure Draw(f: real -> real);
|
||||
|
||||
//------------------------------------------
|
||||
//// Рисование изображений
|
||||
|
|
@ -3490,7 +3492,7 @@ end;
|
|||
type FS = auto class
|
||||
mx,my,a,max: real;
|
||||
x0,y0: integer;
|
||||
f: Func<real,real>;
|
||||
f: real -> real;
|
||||
|
||||
function Apply(x: real): Point;
|
||||
begin
|
||||
|
|
@ -3498,7 +3500,15 @@ type FS = auto class
|
|||
end;
|
||||
end;
|
||||
|
||||
procedure Draw(f: Func<real,real>; a,b: real; x1,y1,x2,y2: integer);
|
||||
procedure Draw(f: real -> real; a,b,min,max: real; x1,y1,x2,y2: integer);
|
||||
begin
|
||||
Rectangle(x1,y1,x2+1,y2+1);
|
||||
var n := (x2-x1) div 3;
|
||||
var fso := new FS((x2-x1)/(b-a),(y2-y1)/(max-min),a,max,x1,y1,f);
|
||||
Polyline(Range(a,b,n).Select(fso.Apply).ToArray)
|
||||
end;
|
||||
|
||||
procedure Draw(f: real -> real; a,b: real; x1,y1,x2,y2: integer);
|
||||
begin
|
||||
Rectangle(x1,y1,x2+1,y2+1);
|
||||
var n := (x2-x1) div 3;
|
||||
|
|
@ -3508,7 +3518,7 @@ begin
|
|||
Polyline(Range(a,b,n).Select(fso.Apply).ToArray)
|
||||
end;
|
||||
|
||||
procedure Draw(f: Func<real,real>; a,b: real; r: System.Drawing.Rectangle);
|
||||
procedure Draw(f: real -> real; a,b: real; r: System.Drawing.Rectangle);
|
||||
var x1 := r.X; y1 := r.Y;
|
||||
x2 := r.X+r.Width-1;
|
||||
y2 := r.Y+r.Height-1;
|
||||
|
|
@ -3516,12 +3526,12 @@ begin
|
|||
Draw(f,a,b,x1,y1,x2,y2);
|
||||
end;
|
||||
|
||||
procedure Draw(f: Func<real,real>; r: System.Drawing.Rectangle);
|
||||
procedure Draw(f: real -> real; r: System.Drawing.Rectangle);
|
||||
begin
|
||||
Draw(f,-5,5,r);
|
||||
end;
|
||||
|
||||
procedure Draw(f: Func<real,real>; a,b: real);
|
||||
procedure Draw(f: real -> real; a,b: real);
|
||||
var x1 := 0; y1 := 0;
|
||||
x2 := Window.Width-1;
|
||||
y2 := Window.Height-1;
|
||||
|
|
@ -3529,7 +3539,7 @@ begin
|
|||
Draw(f,a,b,x1,y1,x2,y2);
|
||||
end;
|
||||
|
||||
procedure Draw(f: Func<real,real>);
|
||||
procedure Draw(f: real -> real);
|
||||
begin
|
||||
Draw(f,-5,5);
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -1155,8 +1155,12 @@ function Power(x, y: integer): real;
|
|||
function Power(x: BigInteger; y: integer): BigInteger;
|
||||
/// Возвращает x, округленное до ближайшего целого
|
||||
function Round(x: real): integer;
|
||||
/// Возвращает целую часть числа x
|
||||
/// Возвращает x, округленное до ближайшего большого целого
|
||||
function RoundBigInteger(x: real): BigInteger;
|
||||
/// Возвращает целую часть вещественного числа x
|
||||
function Trunc(x: real): integer;
|
||||
/// Возвращает целую часть вещественного числа x как BigInteger
|
||||
function TruncBigInteger(x: real): BigInteger;
|
||||
/// Возвращает целую часть числа x
|
||||
function Int(x: real): real;
|
||||
/// Возвращает дробную часть числа x
|
||||
|
|
@ -2977,6 +2981,66 @@ end;
|
|||
//------------------------------------------------------------------------------
|
||||
// Extension methods for BigInteger
|
||||
//------------------------------------------------------------------------------
|
||||
function BigInteger.operator>(p: BigInteger; q: integer): boolean;
|
||||
begin
|
||||
Result := p > BigInteger.Create(q);
|
||||
end;
|
||||
|
||||
function BigInteger.operator>(p: integer; q: BigInteger): boolean;
|
||||
begin
|
||||
Result := BigInteger.Create(p) > q;
|
||||
end;
|
||||
|
||||
function BigInteger.operator<(p: BigInteger; q: integer): boolean;
|
||||
begin
|
||||
Result := p < BigInteger.Create(q);
|
||||
end;
|
||||
|
||||
function BigInteger.operator<(p: integer; q: BigInteger): boolean;
|
||||
begin
|
||||
Result := BigInteger.Create(p) < q;
|
||||
end;
|
||||
|
||||
function BigInteger.operator>=(p: BigInteger; q: integer): boolean;
|
||||
begin
|
||||
Result := p >= BigInteger.Create(q);
|
||||
end;
|
||||
|
||||
function BigInteger.operator>=(p: integer; q: BigInteger): boolean;
|
||||
begin
|
||||
Result := BigInteger.Create(p) >= q;
|
||||
end;
|
||||
|
||||
function BigInteger.operator<=(p: BigInteger; q: integer): boolean;
|
||||
begin
|
||||
Result := p <= BigInteger.Create(q);
|
||||
end;
|
||||
|
||||
function BigInteger.operator<=(p: integer; q: BigInteger): boolean;
|
||||
begin
|
||||
Result := BigInteger.Create(p) <= q;
|
||||
end;
|
||||
|
||||
function BigInteger.operator=(p: BigInteger; q: integer): boolean;
|
||||
begin
|
||||
Result := p = BigInteger.Create(q);
|
||||
end;
|
||||
|
||||
function BigInteger.operator=(p: integer; q: BigInteger): boolean;
|
||||
begin
|
||||
Result := BigInteger.Create(p) = q;
|
||||
end;
|
||||
|
||||
function BigInteger.operator<>(p: BigInteger; q: integer): boolean;
|
||||
begin
|
||||
Result := p <> BigInteger.Create(q);
|
||||
end;
|
||||
|
||||
function BigInteger.operator<>(p: integer; q: BigInteger): boolean;
|
||||
begin
|
||||
Result := BigInteger.Create(p) <> q;
|
||||
end;
|
||||
|
||||
procedure BigInteger.operator+=(var p: BigInteger; q: BigInteger);
|
||||
begin
|
||||
p := p + q;
|
||||
|
|
@ -6095,11 +6159,21 @@ begin
|
|||
Result := Convert.ToInt32(Math.Round(x));
|
||||
end;
|
||||
|
||||
function RoundBigInteger(x: real): BigInteger;
|
||||
begin
|
||||
Result := BigInteger.Create(Math.Round(x));
|
||||
end;
|
||||
|
||||
function Trunc(x: real): integer;
|
||||
begin
|
||||
Result := Convert.ToInt32(Math.Truncate(x));
|
||||
end;
|
||||
|
||||
function TruncBigInteger(x: real): BigInteger;
|
||||
begin
|
||||
Result := BigInteger.Create(Math.Truncate(x));
|
||||
end;
|
||||
|
||||
function Int(x: real): real;
|
||||
begin
|
||||
//if x>=0 then
|
||||
|
|
@ -7169,7 +7243,7 @@ begin
|
|||
end;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// char ext
|
||||
// char методы расширения
|
||||
//------------------------------------------------------------------------------
|
||||
// Преобразовать символ в цифру
|
||||
function char.ToDigit(self: char): integer; extensionmethod;
|
||||
|
|
@ -7230,7 +7304,7 @@ begin
|
|||
end;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// string ext
|
||||
// string методы расширения
|
||||
//------------------------------------------------------------------------------
|
||||
/// Преобразует строку в целое
|
||||
function string.ToInteger: integer;
|
||||
|
|
@ -7238,6 +7312,12 @@ begin
|
|||
Result := integer.Parse(Self);
|
||||
end;
|
||||
|
||||
/// Преобразует строку в BigInteger
|
||||
function string.ToBigInteger: BigInteger;
|
||||
begin
|
||||
Result := BigInteger.Parse(Self);
|
||||
end;
|
||||
|
||||
/// Преобразует строку в вещественное
|
||||
function string.ToReal: real;
|
||||
begin
|
||||
|
|
|
|||
|
|
@ -16102,7 +16102,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
public List<type_node> visit_type_list_with_check(List<SyntaxTree.type_definition> types, List<generic_parameter_eliminations> gpe_list, bool where_checking)
|
||||
{
|
||||
List<type_node> tparams = new List<type_node>();
|
||||
foreach (SyntaxTree.named_type_reference id in types)
|
||||
foreach (SyntaxTree.type_definition id in types)
|
||||
{
|
||||
type_node tn = ret.visit(id);
|
||||
CompilationErrorWithLocation not_useful = generic_parameter_eliminations.check_type_generic_useful(tn, get_location(id));
|
||||
|
|
|
|||
Loading…
Reference in a new issue