Und noch ein Lösungsvorschlag:
Spoiler anzeigen
;#include <array.au3>
#include <File.au3>
#include <array.au3>
Global $aFile, $sSep = @TAB ;Trenner evtl. anpassen
[/autoit] [autoit][/autoit] [autoit]_FileReadToArray(@ScriptDir & "\2dAverage.txt", $aFile)
;_ArrayDisplay($aFile)
Global $a2D[$aFile[0]][2]
_ArrayDelete($aFile, 0)
For $i = 0 To UBound($aFile) - 1
$aSplit = StringSplit($aFile[$i], $sSep, 2)
$a2D[$i][0] = $aSplit[1]
$a2D[$i][1] = StringReplace($aSplit[0],",",".")
Next
;Summierung
$aRes = _ArrayAverage2D($a2D)
_ArrayDisplay($aRes, "Durchschnitt")
Func _ArrayAverage2D(ByRef $avArray)
Local $sActCol, $iActCol = -1, $sRes, $iRes
Local $aTmp = _ArrayUnique($avArray)
_ArrayDelete($aTmp, 0)
_ArraySort($aTmp)
Local $aRes[4][UBound($aTmp)+1]
For $i = 0 To UBound($aTmp) -1
$aRes[0][$i+1] = $aTmp[$i]
Next
$aRes[0][0] = "Nr"
$aRes[1][0] = "Summe"
$aRes[2][0] = "Anzahl"
$aRes[3][0] = "Durchschnitt"
For $i = 0 To UBound($avArray) - 1
For $j = 0 To UBound($aRes,2)-1
ConsoleWrite($avArray[$i][0]&@TAB&$avArray[$i][1]&@CRLF)
If $aRes[0][$j] = $avArray[$i][0] Then
$aRes[1][$j] += $avArray[$i][1]
$aRes[2][$j] += 1
EndIf
Next
Next
For $j = 1 To UBound($aRes,2)-1
$aRes[3][$j] = $aRes[1][$j] / $aRes[2][$j];evtl. noch runden
Next
Return $aRes
EndFunc ;==>_ArrayAverage2D
Edit: einer von uns beiden hat die Aufgabenstellung nicht richtig erfasst,ich komme auf ein ganz anderes Eregebnis.
mfg autoBert