Kleines Projekt, brauche Hilfe

  • Hallo

    Ich habe vor, mit Auto It ein kleines Programm zu schreiben, ist aber ein mathematisches. Und zwar, ich möchte Pi berechnen, mit Hilfe dieser Formel hier, nach Euler:

    [Blockierte Grafik: http://img3.imagebanana.com/img/t8ndhifz/pi.gif]

    Also, dabei ist halt das Problem, das soll so weiter laufen, bis zu einer bestimmten Zahl n, die ich selber bestimmen kann. Wie mache ich das denn? Ich kann ja z.B. 1² einfach definieren mit einer Var und dann immer +1, aber wie geht denn das? Ich habe das Programm seit gestern und habe mir die Dokumentation durchgelesen und die Beispiele angeschaut, aber ganz schlau werde ich noch net, schaut euch mal das kleine Testcript an, da gibt es Probleme, kann Auto It nicht mit Var rechnen?

    Code
    Const $const1 = 2, $const2 = 3, $const3 = 10
    
    
    
    
    $const1 + $const2 * $const3 = $ergebnis
    
    
    MsgBox(64, "Ergebnis", $ergebnis)


    Bin für Hilfe dankbar, mfg

    Einmal editiert, zuletzt von Vater Gans (19. Juli 2008 um 16:36)

  • Hallo,

    kannst du schon, nur drehst du bei deiner Rechnung die Zuweisung um (wobei deine Variablen-Deklaration allerdings richtig ist)

    So müßte es aussehen:

    [autoit]

    Const $const1 = 2, $const2 = 3, $const3 = 10

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

    $ergebnis = $const1 + $const2 * $const3

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

    MsgBox(64, "Ergebnis", $ergebnis)

    [/autoit]
  • Ahh, einfach umdrehen, manchmal kanns auch einfach sein^^ Frage 2, kann man mit dem Programm auch Wurzeln ziehen, sprich $x = Wurzel aus 9 ? In der Anleitung findet sich über Wurzeln gar nichts.

  • Vielen Dank, wusste ich nicht, da ich leider keine Programmiersprache kann (außer vielleicht ein bissl HTML)... Steht auch nicht in der Hilfe, sollte man ergänzen, ist ja eine sinnvolle Funktionen. Soweit habe ich auch das Programm verstanden, doch an der eigentlichen Aufgabe beiße ich mir die Zähne aus, diese unendlich lange Reihe von Zahlen.

    Startaufgabe ist ja immer noch: [Blockierte Grafik: http://img3.imagebanana.com/img/t8ndhifz/pi.gif]

    Ich löse nun nach Pi auf, sprich, die 6 kommt mit *6 auf die andere Seite und dann die Wurzel aus der ganzen Seite, dann habe ich Pi. Das ist aber nicht das Problem, unten habe ich ja immer x². So, nun muss ich dafür sorgen, dass x von Bruch zu Bruch jeweils um 1 größer wird, aber wie? Ich mache eine VAR, die nenne ich x und die ist 1, und nun jeder weitere Bruch x+1, aber wie geht denn das genau? Und wie kann ich bestimmen, wie viele Brüche folgen sollen, denn das kann man ja beliebig fortsetzen, ich möchte also irgendwie bestimmen, dass ich noch 100 Brüche haben will z.B., aber wie geht das denn? ?(

    MfG

  • Hi,
    Xenobiologist , eingentlich müsste doch die Anzahl der Nachkommastellen größer werden, umso höher die Anzhal ist oder?
    Irgendwie verändert sich die Zahl immer.
    Kann das vielleicht sein, dass die Formel nicht stimmt?
    Wikipedia sagt da nämlich was anderes zu den von Euler entdeckten Formeln.

    /Edit: DIe ersten 100 Nachkommastellen: π = 3,14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280 34825 34211 70679 …

    Mit der Formel errechnet (Xenos Script) π = 3.14149716394721

  • Wow, vielen Dank, Xenobiologist hat mir die ganze Arbeit schon abgenommen, so wollte ichs ja gar nicht, aber ok, ich lasse mir den Code auf der Zunge zergehen und lerne dabei auch was!^^ Übrigens, die Formel stimmt! Wenn man nicht 1000, sondern 100000 nimmt, kommt man auf ein viel genaueres ergebnis, das sich der realität immer weiter annähert! Danke!

    Übrigens: Das ist eher nur ein Testprojekt von mir, wenn ich Pi will, im Web gibt es Listen, da finden sich auch die ersten 100000 Stellen.... :D

  • Hallo Nochmal...

    Habe hier nochmal einen Screen, mit X Brüchen, siehe Bild da steht es wie viele es waren, Rechenzeit etwas unter 5 Minuten, die ersten 7 Nachkommastellen sind richtig, der Rest noch falsch... noch^^

  • Hi

    Sehr schönes Programm einfach aber ich fands schon immer interessant Pi auszurechnen thx

  • Hallo!

    Also, da das Pi Projekt damit erstmal erfolgreich abgeschlossen ist, habe ich eine weitere sinnfreie Idee... Könnte man auch ein Programm schreiben, welches Botschaften verschlüsselt? Sprich, ich gebe ein "Hallo" und raus kommt dabei z.B. 83441. Man müsste dabei einfach jedem Buchstaben eine Variable zuordnen und das Programm übersetzt den Text dann, aber wie kann das genau gehen, zwar kann ich in AutoIt eingeben, einen wert, aber der gilt ja immer als 1 zeichen, wie soll denn das nun mit einem ganzen Text gehen? selbst wenn es geht, es ist extrem billig und keine "verschlüsselung", aber interessieren würde es mich^^


    Übirgens, im Anhang ist unser tolles Pi Programm als exe, einfach ausführen, Wert eingeben, und die CPU schmoren lassen :thumbup:

  • Zu Pi: Das Problem ist, das AutoIt nur eine begrenzte Anzahl von Nachkommastellen kann ... DOUBLE hat nur 15 echte Nachkommastellen, also verwendet AutoIt auch nicht mehr.

    Zur verschlüssleung: _StringEncrypt ? :P

  • Hallo

    Ich meine ja nicht verschlüsseln, sondern einfach bestimmte Buchstaben / Zahlen durch andere Werte und Buchstaben zu ersetzen. Ich schau mir das String ding aber mal an.

  • Zwei Alphabete, Stringinstr, StringMid :) alles ersetzen

    Spoiler anzeigen
    [autoit]

    $Alphabet1 = "abcdefghijklmnopqrstuvwxyzäöüABCDEFGHIJKLMNOPQRSTUVXWYZÄÖÜß1234567890^°!§$%&/()=?´`+*#'-_.:,;<>|@€~" & '" '
    $Alphabet2 = "Q´Z/wE;|dr!`°,yM-2Ä'48?JV3DÖotöekapS$:T=ÜgsIN.HßcXGW€59Ph>ü)Bxä 1RF Kv6U§7#<&fL(_@%l" & '"' & "Yq*+mzui0^OjAnCb~"
    $Text = "hallo so ein test :P"

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

    ;Encode
    $temp = StringSplit($Text,"")
    $out = ""
    For $i = 1 To $temp[0]
    $out &= StringMid($Alphabet2,StringInStr($Alphabet1,$temp[$i],1),1)
    Next
    ConsoleWrite($out & @CRLF)

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

    ;decode
    $temp = StringSplit($out,"")
    $out = ""
    For $i = 1 To $temp[0]
    $out &= StringMid($Alphabet1,StringInStr($Alphabet2,$temp[$i],1),1)
    Next
    ConsoleWrite($out & @CRLF)

    [/autoit]