CALCULS4.PAS 2.75 KB
Newer Older
1
Unit CALCULS4;   {JC Bader, nov 2016}
2
3

interface
4
 uses Utilit,DECLARA;
5
6


7
procedure C4_TriChronique(var ZFic,ZFicT:YtypFod; ZNbNul : longint; ZTouComNul : double;
8
9
10
                       var ZQmoy,ZQmed,ZQmax,ZQmin : double; var ZQRare,ZQfrequent : YtypFreq);

IMPLEMENTATION
11
12
13
14
15
16

{=======================================================================}
{==Tri des valeurs d'une chronique contenue dans le fichier Zfic et   --}
{--criture de ces valeurs tries dans le fichier ZFicT, puis calcule --}
{--les valeurs dpasses ou non dpasses pour certaines frquences   --}
{--prdfinies ainsi que min, max, mdiane et moyenne                 --}
17
{=======================================================================}
18
19

procedure C4_TriChronique(var ZFic,ZFicT:YtypFod; ZNbNul : longint; ZTouComNul : double;
20
21
22
23
                       var ZQmoy,ZQmed,ZQmax,ZQmin : double; var ZQRare,ZQfrequent : YtypFreq);
 const
  XNomFicTri   : string = 'TRI';
  XNul         : double = 0;
24

25
26
27
28
29
30
31
32
33
 var
  XFic         : YTypFod;
  XRang        : longint;
  Xeffectif    : longint;
  XQ           : double;
  XQpred       : double;
  XStop        : boolean;
  Xi           : integer;
  Xfreq : double;
34

35
36
 begin
  reset(ZFic);
37
  rewrite(ZFicT);
38
39
40
41
42
43
44
  ZQmoy:=0;
  repeat
   read(ZFic,XQ);
   ZQmoy:=ZQmoy+XQ;
   if XQ>ZTouComNul then
    begin
     XStop:=false;
45
46
     XRang:=filesize(ZFicT)-1;
     seek(ZFicT,B_maxin(0,Xrang));
47
48
     while (XRang>=0) and (not Xstop) do
      begin
49
       read(ZFicT,XQpred);
50
51
52
53
       if XQPred>XQ then
        XStop:=true
       else
        begin
54
         write(ZFicT,XQPred);
55
         XRang:=XRang-1;
56
         seek(ZFicT,B_maxin(0,XRang));
57
58
        end;
      end;
59
     write(ZFicT,XQ);
60
61
    end;
  until eof(ZFic);
62
63
  close(ZFic);
  seek(ZFicT,filesize(ZFicT));
64
  for XRang:=1 to ZNbNul do
65
66
67
68
69
70
   write(ZFicT,XNul);
  reset(ZFicT);
  read(ZFicT,ZQmax);
  XEffectif:=filesize(ZFicT);
  seek(ZFicT,XEffectif-1);
  read(ZFicT,ZQmin);
71
72
73
74
  ZQmoy:=ZQmoy/XEffectif;
  for Xi:=1 to YNbFreq do
   begin
    XFreq:=1/YTpsFreq[Xi];
75
76
77
    XRang:=B_maxlongint(1,trunc((XEffectif+YB)*Xfreq+YA));
    seek(ZFicT,XRang-1);
    read(ZFicT,XQpred,XQ);
78
79
80
    ZQRare[Xi]:=XQPred+(XQ-XQpred)*(XFreq-(XRang-YA)/(XEffectif+YB))*(XEffectif+YB);
   end;
  XFreq:=0.5;
81
82
83
  XRang:=B_maxlongint(1,trunc((XEffectif+YB)*XFreq+YA));
  seek(ZFicT,XRang-1);
  read(ZFicT,XQpred,XQ);
84
85
86
87
  ZQmed:=XQPred+(XQ-XQpred)*(XFreq-(XRang-YA)/(XEffectif+YB))*(XEffectif+YB);
  for Xi:=1 to YNbFreq do
   begin
    XFreq:=1-1/YTpsFreq[YNbFreq+1-Xi];
88
89
90
    XRang:=B_minlongint(XEffectif-1,trunc((XEffectif+YB)*Xfreq+YA));
    seek(ZFicT,XRang-1);
    read(ZFicT,XQpred,XQ);
91
92
    ZQFrequent[Xi]:=XQPred+(XQ-XQpred)*(XFreq-(XRang-YA)/(XEffectif+YB))*(XEffectif+YB);
   end;
93
  close(ZFicT);
94
95
96
97
98
 end;

{=======================================================================}
BEGIN
END.