Prep BinaryPrep1() {ΠΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°}
Static
Real MinSignals Name "ΠΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real MaxSignals Name "ΠΠ΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real Unknown Name"ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π°, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ";
Logic Type Name "Π’ΠΈΠΏ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°";
Begin
If TLong(Data[1]) = UnknownLong Then Signals[1] = Unknown
Else Begin
If Type Then Begin
If TLong(Data[1]) = 1 Then Signals[1] = 0 Else Begin
If MaxSignals =0 Then Signals[1] = MinSignals
Else Signals[1] = MaxSignals
End
Else Begin
If TLong(Data[1]) = 1 Then Signals[1] = MinSignals
Else Signals[1] = MaxSignals
End
End
End
{ΠΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°}
Prep UnOrdered1(Num : Long)
Static
Real MinSignals Name "ΠΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real MaxSignals Name "ΠΠ΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real Unknown Name"ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π°, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ";
Var
Integer I;
Begin
If TLong(Data[1]) = UnknownLong Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To Num Do
Signals[I] = MinSignals
Signals[TLong(Data[1])] = MaxSignals
End
End
Prep Ordered1(Num : Long) {ΠΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°}
Static
Real MinSignals Name "ΠΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real MaxSignals Name "ΠΠ΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real Unknown Name"ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π°, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ";
Var
Integer I;
Begin
If TLong(Data[1]) = UnknownLong Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To TLong(Data[1]) Do
Signals[I] = MaxSignals
For I = TLong(Data[1])+1 To Num Do
Signals[I] = MinSignals
End
End
Prep EmptyPrep1() {ΠΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠΉ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π²ΠΈΠ³ ΡΠΈΠ³Π½Π°Π»Π°}
Static
Real MinSignals Name "ΠΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real MaxSignals Name "ΠΠ΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real Unknown Name"ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π°, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ";
Real MinData Name"ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ";
Real MaxData Name"ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π²Π΅ΡΡ Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ";
Begin
If Data[1] = UnknownReal Then Signals[1] = Unknown
Else Signals[1] = (Data[1] β MinData) * (MaxSignals β MinSignals) / (MaxData β MinData) + MinSignals
End
Prep ModPrep1(Num : Long) {ΠΠΎΠ΄ΡΠ»ΡΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ}
Static
Real MinSignals Name "ΠΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real MaxSignals Name "ΠΠ΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real Unknown Name "ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π°, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ";
RealArray[Num] Y Name "ΠΠ°ΡΡΠΈΠ² Π²Π΅Π»ΠΈΡΠΈΠ½, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ"
Var
Integer I;
Begin
If Data[1] = UnknownReal Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To Num Do
Signals[I] = (Data[1] RMod Y[I] + Y[I]) * (MaxSignals β MinSignals) / (2 * Y[I]) + MinSignals
End
Prep FuncPrep1(Num : Long; F : FuncType) {Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ}
Static
Real MinSignals Name "ΠΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real MaxSignals Name "ΠΠ΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²";
Real Unknown Name "ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π°, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ " +
"ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ";
Real MinData Name "ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ F ";
Real MaxData Name "ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π²Π΅ΡΡ Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ F";
RealArray[Num] Y Name "ΠΠ°ΡΡΠΈΠ² Π²Π΅Π»ΠΈΡΠΈΠ½, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ"
Var
Integer I;
Begin
If Data[1] = UnknownReal Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To Num Do
Signals[1] = (F(Data[1] β Y[1] β MinData) * (MaxSignals β MinSignals) / (MaxData β MinData) + MinSignals
End
Prep PositPrep1(Num : Long) {ΠΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ}
Static
Real MinSignals Name "ΠΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²"
Real MaxSignals Name "ΠΠ΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ²"
Real Unknown Name"ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π°, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ";
Real Y Name "ΠΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ"
Var
Integer I;
Real W, Q;
Begin
If Data[1] = UnknownReal Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
W = Data[1];
For I = 1 To Num Do Begin
Q = W RMod Y;
Signals[I] = Q * (MaxSignals β MinSignals) / Y + MinSignals;
W = (W - Q) / Y
End;
End
Contents Temp : EmptyPrep1, Cloud : BinaryPrep1, Wind : UnOrdered1(8), Rain : Ordered1(3);
{ΠΠ»Ρ Π²ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² Π»Π΅ΠΆΠ°Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅ ΠΎΡ -1 Π΄ΠΎ 1. Π ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π²ΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΡΠ°Π²Π½ΡΠΌΠΈ Π½ΡΠ»Ρ. ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΡ 273 Π΄ΠΎ 293}
Temp SetParameters -1, 1, 1E-40, 273, 293;
CloudSetParameters -1, 1, 0, True;
Wind SetParameters -1, 1, 0;
RainSetParameters -1, 1, 0
Signals NumberOf(Signals,Temp) + NumberOf(Signals, Cloud) + NumberOf(Signals, Wind(8)) + NumberOf(Signals, Rain(3))
Data NumberOf(Data,Temp) + NumberOf(Data, Cloud) + NumberOf(Data,Wind(8)) + NumberOf(Data, Rain(3))
Connections
Temp.Data <=> Data[1];
Cloud.Data <=> Data[2];
Wind.Data <=> Data[3];
Rain.Data <=> Data[4];
Temp.Signals <=> Signals[1];
Cloud.Signals <=> Signals[2];
Wind.Signals[1..8] <=> Signals[3..10];
Rain.Signals[1..3] <=> Signals[11..13]
End Preparator
ΠΡΠΈΠΌΠ΅Ρ 2.
Preparator Meteorology
Contents Temp : EmptyPrep, Cloud : BinaryPrep, Wind : UnOrdered(8), Rain : Ordered(3);
Temp SetParameters -1, 1, 1E-40, 273, 293
End Preparator
Π‘ΡΠ°Π½Π΄Π°ΡΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
ΠΠ°ΠΏΡΠΎΡΡ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° ΠΏΡΡΡ Π³ΡΡΠΏΠΏ:
1. ΠΡΠ΅Π΄ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°.
2. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
3. Π Π°Π±ΠΎΡΠ° ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ.