Zahlen auslesen und addieren

  • Hallo,
    ich habe ein Skript geschrieben was mir aus einer txt diverse Zahlen ausliest
    und eine andere txt Datei reinschreibt.

    Das sieht dann z.B. so aus:

    12
    12
    15
    16
    20
    ......

    Jetzt würde ich gerne die neuen Zahlen Zeile für Zeile auslesen (Filereadline) und addieren, aber
    er soll dann nicht einfach 12+12+15+16+20 rechnen, sondern die Zahlen die er addieren soll
    hätten andere Werte

    12 =100
    15 = 320
    16=500
    20=999

    Ich hoffe das ist verständlich........

  • lol! Wozu den sowas sinn freies? Wenn Du den Zahlen noch wiederum andere Werte zuweisen möchtest, so mach dies doch über eine INI-Datei (Stichwort: INIRead)! Wobei ich nicht verstehe, wozu das Ganze überhaupt gut ist.


  • in ein Array lesen und dann das Mapping addieren.

    Ich muss gestehen mit Arrays habe ich noch gar nicht gearbeitet :(
    Vielleicht ein kleines Beispiel wie das in Verbindung mit Filereadline aussieht ^^

  • Hm naja ich hoffe mal ich habs ungefär richtig interpretiert, hier ein Beispiel:

    Skript:

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    Global $Line
    Global $Text
    _FileReadToArray("zahlen.txt",$Line)
    If @error then Exit
    For $i = 1 to $Line[0]
    Switch $Line[$i]
    Case "1"
    $Text &= "50" & @CRLF
    Case "2"
    $Text &= "100" & @CRLF
    Case "3"
    $Text &= "150" & @CRLF
    Case "4"
    $Text &= "200" & @CRLF
    Case "5"
    $Text &= "250" & @CRLF
    Case "6"
    $Text &= "300" & @CRLF
    Case "7"
    $Text &= "350" & @CRLF
    Case "8"
    $Text &= "400" & @CRLF
    Case "9"
    $Text &= "450" & @CRLF
    Case "10"
    $Text &= "500" & @CRLF
    EndSwitch
    Next
    $File = FileOpen("zahlenausgabe.txt",1)
    FileWrite($File,$Text)
    FileClose($File)

    [/autoit]

    Txt:

    Spoiler anzeigen
    Code
    1
    6
    8
    9

    Man könnte, falls es bei deiner Umrechnungen ne Proportionalität oder ähnliches gibt es auch einfacher lösen,
    hätte man in diesem Fall auch gekonnt aber bin nicht davon ausgegangen, dass es so ist.

    edit: fehler mit seterror, bin ja garnicht in ner func *g*
    und FileReadToArray funzt nicht, frage mich nur gerade warum.

    edit2: filereadtoarray funzt nicht mit handels, hmm. vllt wirds ja innerhalb der func mit handels gemacht ;)

    Greetz

    Einmal editiert, zuletzt von qon (7. Februar 2008 um 18:02)

  • So wie Du es gepostet hast qon, genauso brauche ich es, nur leider funktioniert es ja
    nicht. :( er schreibt zwar die neuen Zahlen in eine TXT aber addiert sie nicht

  • Was bisher funktionert ist das er in eine neue TXT anstatt 1;2;3 etc z.B. 10;33;55 reinschreibt :)
    Naja das addieren der Zahlen in der neuen TxT werde ich mal versuchen selbst zu lösen

  • Ich hatte das Skript doch verbessert, sodass es funktioniert ;)
    Hier jetzt nochmal die Addition die du ja eigentlich wolltest...

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    Global $Line
    GLobal $Summe
    _FileReadToArray("zahlen.txt",$Line)
    If @error then Exit
    For $i = 1 to $Line[0]
    Switch $Line[$i]
    Case "1"
    $Summe += 50
    Case "2"
    $Summe += 70
    Case "3"
    $Summe += 110
    Case "4"
    $Summe += 199
    Case "5"
    $Summe += 222
    Case "6"
    $Summe += 321
    Case "7"
    $Summe += 322
    Case "8"
    $Summe += 323
    Case "9"
    $Summe += 350
    Case "10"
    $Summe += 400
    EndSwitch
    Next
    $File = FileOpen("ergebnis.txt",1)
    FileWrite($File,$Summe)
    FileClose($File)

    [/autoit]

    Wäre aber gut wenn du den Code verstehst, sonst hat das alles ja kein Sinn ;)

    Greetz

    • Offizieller Beitrag

    Hi,

    oder so evtl.

    [autoit]

    #include<File.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $key[10] = [1,2,3,4,5,6,7,8,9,0]
    Global $value[10] = [101,9,8,7,6,5,4,3,2,1]
    Global $zahlen_A, $ergebnis = 0

    [/autoit][autoit][/autoit][autoit]

    If Not _FileReadToArray("Zahlen.txt",$zahlen_A) Then Exit(0)

    [/autoit][autoit][/autoit][autoit]

    For $x = 1 to $zahlen_A[0]
    For $i = 0 TO UBound($key) -1
    If $zahlen_A[$x] = $key[$i] Then $ergebnis +=$value[$i]
    Next
    Next
    MsgBox(0,0,$ergebnis)

    [/autoit]

    Mega