Parameter übergabe nicht Korrekt

Björn

Level-1
Beiträge
33
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich hoffe mir kann da jemand helfen

Code:
FUNCTION Summe : REAL
[COLOR=yellowgreen]// N[/COLOR]
[COLOR=yellowgreen]// ∑  (X1[i]-X2)^2[/COLOR]
[COLOR=yellowgreen]//i=1[/COLOR]
VAR_INPUT
N   :INT ; [COLOR=yellowgreen]//N-WERTE[/COLOR] 
X1   :ARRAY [1..50] OF REAL; 
X2   :REAL;
END_VAR
VAR_TEMP
I           :INT;    [COLOR=yellowgreen]// temporäre Variablen[/COLOR]
LSumme :REAL;  [COLOR=yellowgreen]//Letze Summe[/COLOR]
END_VAR
FOR I:= 1 TO N BY 1 DO
    LSumme:=LSumme+SQRT(X1[I]-X2);
END_FOR;
Summe:=LSumme; 
END_FUNCTION
 
FUNCTION Standardabw : REAL
[COLOR=yellowgreen]//Funktion zur Berechnung der Standardabweichung[/COLOR]
VAR_INPUT
Xmittel      :REAL ;                        [COLOR=yellowgreen]//Mittelwert Xmittel[/COLOR]
Xi             :ARRAY [1..50] OF REAL ; [COLOR=yellowgreen]//Element der Stichprobe[/COLOR]
Anzahl      :INT  ;                          [COLOR=yellowgreen]//Anzahl der Messwerte[/COLOR]
END_VAR
VAR_TEMP
;
END_VAR
Standardabw:=SQRT( (1/(Anzahl-1))*Summe(N:=Anzahl,X1:=[COLOR=black]Xi[/COLOR][COLOR=red]l[/COLOR],X2:=Xmittel));
END_FUNCTION
Der Curser ( l ) bleibt an der stelle stehn wenn ich den Fehler anklicke.
Ich arbeite erst seid ein paar tagen mit SCL.Steht der Curser vor oder hinter dem Fehler? Also ist die Parameterübergabe bei X1 oder X2 falsch?
Kann ich kein array als Parameter übergeben in einer Funktion ?
 
Zuletzt bearbeitet:
Hallo,
di kannst nicht den Eingangsparameter Xi direkt durchleiten sondern muß ihn erst lokal abbilden. Also so :
Code:
FUNCTION Standardabw : REAL
[COLOR=yellowgreen]//Funktion zur Berechnung der Standardabweichung[/COLOR]
VAR_INPUT
Xmittel      :REAL ;                        [COLOR=yellowgreen]//Mittelwert Xmittel[/COLOR]
Xi             :ARRAY [1..50] OF REAL ; [COLOR=yellowgreen]//Element der Stichprobe[/COLOR]
Anzahl      :INT  ;                          [COLOR=yellowgreen]//Anzahl der Messwerte[/COLOR]
END_VAR
VAR_TEMP
hXi             :ARRAY [1..50] OF REAL ; [COLOR=yellowgreen]//Element der Stichprobe[/COLOR]
END_VAR
[COLOR=red][B]hXi := Xi ;[/B][/COLOR]
Standardabw:=SQRT( (1/[B][COLOR=red]int_to_real[/COLOR][/B]((Anzahl-1))*Summe(N:=Anzahl,X1:=[COLOR=red][B]hXi[/B][/COLOR],X2:=Xmittel));
END_FUNCTION
... die zu ändernden Passagen habe ich Rot markiert ...

des weiteren:
In der Function Summe solltest du überprüfen, on Anzahl innerhalb der Array-Grenzen bleibt ...

Gruß
LL
 
Zurück
Oben