program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,Graphics;
{$DEFINE CS1 : используется в пункте 4.04.02 }
{$DEFINE CS2 : используется в пункте 4.04.06* }
CONST
NS = 7;
NP = 4;
TYPE
AGAF = Array[1..NS,1..NP] Of Real;
CONST
IDES : AGAF =(( 01, 00, 0.4800, 0.000),
( 02, 01, 0.2400, -1.720),
( 03, 02, 0.1200, -0.310),
( 04, 03, 0.1600, -2.030),
( 05, 04, 0.0200, 2.530),
( 06, 05, 0.0100, 0.800),
( 07, 06, 0.1000, -0.920));
var
AC :TCanvas;//ArcCoordsType;
I,J : Integer;
SA : Real;
SF : Real;
APV : Array[1..NS,1..NS-1,0..1] Of Integer;
ADNV : Array[1..NS,1..NS-1,0..1] Of Integer;
ARF : Array[1..NS-1] Of Real;
CONST
SX0=325; SY0=225;
VAR
X,Y : Integer;
XM,YM : Integer;
DX,DY : Integer;
D,R,GE : Integer;
CONST
TB0=15; TB1= 7;
TC0= 8; TC1= 1; TC2= 6;
ATC : Array[1..NS] Of Word = (8,1,2,3,4,5,6);
SV=12; SG=8;
VAR
S,S0 : String;
begin
{ TODO -oUser -cConsole Main : Insert code here }
D:=Detect;
InitGraph(D,R,'');
GE:=GraphResult;
If GE<>grOk Then
Begin
WriteLn('Ошибка открытия графического режима:',GraphErrorMsg(GE)); Exit
End;
SetBkColor(TB0); SetColor(TC0);
SetViewPort(0,0,639,479,ClipOn);
OutTextXY(1,1,'Программа DAP_01_1.PAS (BORLAND PASCAL 7.0)');
OutTextXY(580,1,'Окно 1');
OutTextXY(SG*4,SV*2,
OutTextXY(SG*1,SV*5,'Параметры сигнала АЛСН');
OutTextXY(SG*2,SV*7,'Гармо-'); OutTextXY(SG*9,SV*7,'Ампли-');
OutTextXY(SG*17,SV*7,'Фаза,');
OutTextXY(SG*2,SV*8,' ника '); OutTextXY(SG*9,SV*8,' туда ');
OutTextXY(SG*17,SV*8,'рад. ');
For I:=1 To NS Do
For J:=1 To 3 Do
Begin
If J=1 Then Str(IDES[I,J+1]0,S) Else Str(IDES[I,J+1]:5:2,S);
OutTextXY(SG*((J-1)*7+2),SV*(I+8),S);
End;
OutTextXY(SG*1,SV*17,'ПРИМЕЧАНИЯ.');
OutTextXY(SG*1,SV*18,' 1. Амлитудно-фазовые');
OutTextXY(SG*1,SV*19,' характеристики изо-');
OutTextXY(SG*1,SV*20,' бражаются только для');
OutTextXY(SG*1,SV*21,' гармоник, амплитуда');
OutTextXY(SG*1,SV*22,' которых не менее ');
OutTextXY(SG*1,SV*23,' 0.09.');
OutTextXY(SG*1,SV*24,' 2. На амлитудно-фазовых');
OutTextXY(SG*1,SV*25,' характеристиках циф-');
OutTextXY(SG*1,SV*26,' рами обозначены но-');
OutTextXY(SG*1,SV*27,' мера гармоник.');
SA:=600;
SF:=360/(2*Pi);
PutPixel(SX0,SY0,ATC[1]);
SetColor(ATC[1]);
MoveTo(SX0,SY0); LineRel(Round(IDES[1,3]*SA),0);
XM:=GetX; YM:=GetY;
APV[1,1,0]:=XM; APV[1,1,1]:=YM;
{$IFDEF CS1 Проверка значения координат текущего указателя }
Str(XM,S); Str(YM,S0); OutTextXY(SG*2,SV*30,S); OutTextXY(SG*10,SV*30,S0);
{$ENDIF}
SetColor(TB0);
For I:=Round(IDES[2,1]) To NS Do
If IDES[I,3]>=0.09 Then
For J:=1 To Round(IDES[I,2]) Do
Begin
ARF[J]:=IDES[I,4]+
(2*Pi/IDES[I,2])*(J-1);
Arc(SX0,SY0,1,Round(ARF[J]*SF),
Round(IDES[I,3]*SA));
GetArcCoords(AC);
APV[I,J,0]:=AC.XEnd;
APV[I,J,1]:=AC.YEnd;
End;
For I:=Round(IDES[2,1]) To NS Do
If IDES[I,3]>=0.09 Then
Begin
SetColor(ATC[I]);
For J:=1 To Round(IDES[I,2]) Do
Line(SX0,SY0,
APV[I,J,0],APV[I,J,1]);
End;
SetColor(ATC[1]);
Circle(APV[1,1,0],APV[1,1,1],3);
SetFillStyle(1,ATC[1]);
FloodFill(APV[1,1,0]+1,APV[1,1,1]+1,ATC[1]);
For I:=Round(IDES[2,1]) To NS Do
If IDES[I,3]>=0.09 Then
Begin
SetColor(ATC[I]);
For J:=1 To Round(IDES[I,2]) Do
Begin
Circle(APV[I,J,0],APV[I,J,1],3);
SetFillStyle(1,ATC[I]);
If APV[I,J,0]>=SX0 Then DX:=1 Else DX:=-1;
If APV[I,J,1]>=SY0 Then DY:=1 Else DY:=-1;
FloodFill(APV[I,J,0]+DX,APV[I,J,1]+DY,ATC[I]);
End;
End;
{$IFDEF CS2 }
PutPixel(SG*02,SV*30,TC0);
SetColor(TC1); OutTextXY(SG*2,SV*30,'0');
MoveTo(SG*10,SV*30);
XM:=GetX; YM:=GetY;
PutPixel(XM,YM,TC0);
Str(01,S);
SetColor(TC2); OutTextXY(XM,YM,S);
{$ENDIF}
SetColor(ATC[1]); Str(Round(IDES[1,2]),S);
OutTextXY(APV[1,1,0]+ADNV[1,1,0],APV[1,1,1]+ADNV[1,1,1],S);
For I:=Round(IDES[2,1]) To NS Do
If IDES[I,3]>=0.09 Then
Begin
SetColor(ATC[I]);
Str(Round(IDES[I,2]),S);
For J:=1 To Round(IDES[I,2]) Do
OutTextXY(APV[I,J,0]+ADNV[I,J,0],APV[I,J,1]+ADNV[I,J,1],S);
End;
SetColor(TC0);
OutTextXY(SG,464,'Для выхода из программы нажмите любую клавишу.');
Repeat Until KeyPressed;
CloseGraph;
end.
Отладка консольного приложения, Компиляция |