type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; Button1: TButton; Edit2: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; A:array of shortint; implementation
{$R *.dfm}
Function P(A:integer):boolean; Var d,K:integer; Begin P:=true; if A < 2 then P:=false else if A < 4 then P:=true else if A mod 2 = 0 then P:=false else Begin K:=Trunc(Sqrt(A)); d:=3; While d <= K do Begin if A mod d = 0 then P:=false; d:=d+2 End; End; End;
procedure TForm1.Button1Click(Sender: TObject); Var N:integer; begin Randomize; Edit2.Text:=''; N:=StrToInt(Edit1.Text); SetLength(A,N); For N:= 0 to N-1 do Begin A[N]:=Trunc(Sin(random(20))*20); if P(A[N]) then Edit2.Text:=Edit2.Text+IntToStr(A[N])+'0 ' else Edit2.Text:=Edit2.Text+IntToStr(A[N])+' ' End; end;
end.
Алёна Геннадьевна98
23.12.2022
Function sq(var x1,y1,x2,y2,x3,y3: real):real; begin // вычисляем площадь треугольника с // векторного произведения sq:=abs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))/2; end; // основная программа var x,y,x1,y1,x2,y2,x3,y3,x4,y4,st,sp:real; begin write('координаты 4 вершин x1 y1 x2 y2 x3 y3 x4 y4 через пробел: '); readln(x1,y1,x2,y2,x3,y3,x4,y4); sp:=2*sq(x1,y1,x2,y2,x3,y3); write('координаты точки x y через пробел: '); readln(x,y); st:=sq(x1,y1,x2,y2,x,y) + sq(x2,y2,x3,y3,x,y) + sq(x3,y3,x4,y4,x,y) + sq(x4,y4,x1,y1,x,y); if abs(sp-st)<1.0e-9 then writeln('точка принадлежит прямоугольнику') else writeln('точка не принадлежит прямоугольнику'); end.
координаты 4 вершин x1 y1 x2 y2 x3 y3 x4 y4 через пробел: 1 4 6 9 9 6 4 1 координаты точки x y через пробел: 4 7 точка принадлежит прямоугольнику
координаты 4 вершин x1 y1 x2 y2 x3 y3 x4 y4 через пробел: 1 4 6 9 9 6 4 1 координаты точки x y через пробел: 1.5 1.6 точка не принадлежит прямоугольнику
Negutsa_Kseniya524
23.12.2022
// PascalABC.NET 3.3, сборка 1627 от 27.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var n:=4; var xp:=new real[n]; var yp:=new real[n]; Writeln('Введите парами координаты четырех вершин'); for var i:=0 to n-1 do Read(xp[i],yp[i]); var (x,y):=ReadReal2('Введите координаты точки:'); var (i,j,c):=(0,n-1,False); while i<n do begin if ((yp[i]<=y) and (y<yp[j]) or (yp[j]<=y) and (y<yp [i])) and (x<(xp[j]-xp[i])*(y-yp[i])/(yp[j]-yp[i])+xp[i]) then c:=not c; j:=i; i+=1; end; if c then Writeln('Внутри') else Writeln('Не внутри') end.
Примеры Введите парами координаты четырех вершин 1 4 6 9 9 6 4 1 Введите координаты точки: 1.5 1.6 Не внутри
Введите парами координаты четырех вершин 1 4 6 9 9 6 4 1 Введите координаты точки: 4 7 Внутри
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
[delphi - form] дан динамический одномерный массив, после каждого собственного числа(число которое делится на себя и на 1) вставить "0".
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
A:array of shortint;
implementation
{$R *.dfm}
Function P(A:integer):boolean;
Var
d,K:integer;
Begin
P:=true;
if A < 2 then P:=false
else
if A < 4 then P:=true
else
if A mod 2 = 0 then P:=false
else
Begin
K:=Trunc(Sqrt(A));
d:=3;
While d <= K do
Begin
if A mod d = 0 then P:=false;
d:=d+2
End;
End;
End;
procedure TForm1.Button1Click(Sender: TObject);
Var
N:integer;
begin
Randomize;
Edit2.Text:='';
N:=StrToInt(Edit1.Text);
SetLength(A,N);
For N:= 0 to N-1 do
Begin
A[N]:=Trunc(Sin(random(20))*20);
if P(A[N]) then Edit2.Text:=Edit2.Text+IntToStr(A[N])+'0 '
else Edit2.Text:=Edit2.Text+IntToStr(A[N])+' '
End;
end;
end.