summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-12-14 12:51:11 +0100
committerErich Eckner <git@eckner.net>2017-12-14 12:51:11 +0100
commit59f49375547326a4e7e379ff5372b1b93f620d8d (patch)
tree61ceca06d1150ded6f9a8afef5bfae893162c875
parent03b2d87e3609bcff1bf1056cacecad8847bcad1c (diff)
downloadunits-59f49375547326a4e7e379ff5372b1b93f620d8d.tar.xz
matheunit.pas: ermittleAnstief aufgeräumt
-rw-r--r--matheunit.pas40
1 files changed, 27 insertions, 13 deletions
diff --git a/matheunit.pas b/matheunit.pas
index 71005c5..5247f68 100644
--- a/matheunit.pas
+++ b/matheunit.pas
@@ -919,39 +919,53 @@ var
s: string;
xSum,xQdrSum,ySum,xySum: extended;
wert: tExtPoint;
- i,anz: longestOrdinal;
+ i,j,anz: longestOrdinal;
+ reihenfolge: string[2];
+ positionen: array[0..2] of longestOrdinal;
begin
if xSpalte=ySpalte then begin
result:=1;
exit;
end;
- anz:=0;
+
+ positionen[0]:=-1;
+ positionen[1]:=min(xSpalte,ySpalte);
+ positionen[2]:=max(xSpalte,ySpalte);
+
+ if xSpalte<ySpalte then
+ reihenfolge:='xy'
+ else
+ reihenfolge:='yx';
+
xSum:=0;
+ xQdrSum:=0;
ySum:=0;
xySum:=0;
- xQdrSum:=0;
+ anz:=0;
+
assignFile(f,dat);
reset(f);
while not eof(f) do begin
readln(f,s);
- for i:=0 to min(xSpalte,ySpalte)-1 do
- erstesArgument(s);
- wert[char(ord('x')+byte(ySpalte<xSpalte))]:=
- strToFloat(erstesArgument(s));
- for i:=min(xSpalte,ySpalte)+1 to max(xSpalte,ySpalte)-1 do
- erstesArgument(s);
- wert[char(ord('x')+byte(xSpalte<ySpalte))]:=
- strToFloat(erstesArgument(s));
- inc(anz);
+ for j:=1 to 2 do begin
+ for i:=positionen[j-1]+1 to positionen[j]-1 do
+ erstesArgument(s);
+ wert[reihenfolge[j]]:=
+ strToFloat(erstesArgument(s));
+ end;
xSum:=xSum+wert['x'];
ySum:=ySum+wert['y'];
xySum:=xySum+wert['x']*wert['y'];
xQdrSum:=xQdrSum+sqr(wert['x']);
+ inc(anz);
end;
closeFile(f);
if anz=0 then
fehler('Keine Werte in Anstiegs-Datei'''+dat+'''!');
- result:=(anz*xySum-xSum*ySum)/(anz*xQdrSum-sqr(xSum))
+ if anz*xQdrSum=sqr(xSum) then
+ fehler('Anstieg aus '''+dat+''' nicht bestimmbar!');
+
+ result:=(anz*xySum-xSum*ySum)/(anz*xQdrSum-sqr(xSum));
end;
end.