diff options
author | Erich Eckner <git@eckner.net> | 2017-12-14 12:51:11 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-12-14 12:51:11 +0100 |
commit | 59f49375547326a4e7e379ff5372b1b93f620d8d (patch) | |
tree | 61ceca06d1150ded6f9a8afef5bfae893162c875 /matheunit.pas | |
parent | 03b2d87e3609bcff1bf1056cacecad8847bcad1c (diff) | |
download | units-59f49375547326a4e7e379ff5372b1b93f620d8d.tar.xz |
matheunit.pas: ermittleAnstief aufgeräumt
Diffstat (limited to 'matheunit.pas')
-rw-r--r-- | matheunit.pas | 40 |
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. |