If-Then // ​If-Then // ​If-Then // ​If-Then //

  • Moin.

    Diese Rechnung lege ich mal zur Grundlage: $_m = 10+7.

    Nun wollte ich nur das Rechenzeichen (+ oder -) von einer Variabel abhängig machen und dachte es geht so:

    Code
    $_zahl_1 = 10
    $_zahl_2 = 7
    
    $_rz_plus = +
    $_rz_minus = -
     
    $_m = '$_zahl_1 & $_rz_plus & $_zahl_2' 
    $_m = '$_zahl_1 & $_rz_minus & $_zahl_2' ; sollte das Ergebnis anzeigen.

    Ja, im Kopf ging es. Aber die Umsetzung der Gedanken in ein Script ist dann doch nicht ganz ohne.

    Da ich Rechenzeichen (+ oder -) aber nicht in eine Variable stezen kann um damit zu rechen, bleibt eine
    If-Then die so aussieht:
    16 If-Then Anbfragen,

    davon:
    - 4 If-Then Anbfragen mit einer weiteren If-Then Anbfragen in der If-Then Anbfragen mit jeweils zwei sich wechselndeln If-Then Anbfragen
    - 1 If-Then Anbfragen mit drei weiteren If-Then Anbfragen in der If-Then Anbfragen mit vier sich wechselndeln If-Then Anbfragen

    Aber ich habe das nun in den letzten zwei Tagen mal mit Papier & Stift "aufgemalt" und grob die einzelnen Schritte aufgeschrieben.

    Wenn das Gerüst stimmt (die ganzen If-Then's) bin ich froh.

    Sollte jemand eine Lsg kennen, wie das Rechenzeichen als Variable eingesetzt werden kann, darf gerne sein Wisssen mit mir teilen. :rofl:

    So, etwas weiter machen. Vorher ein frischen Tee machen. Gleich eine ganze Kanne. ;)

    Schönen Sonntag und Start in die Woche.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Sowas?:

    AutoIt
    $_zahl_1 = 10
    $_zahl_2 = 7
    
    $_rz_plus = "+"
    $_rz_minus = "-"
    
    $_m = Execute('$_zahl_1' & $_rz_plus & '$_zahl_2')
    $_m = Execute('$_zahl_1' & $_rz_minus & '$_zahl_2')
    
    ConsoleWrite($_m & @CRLF)
  • AspirinJunkie Danke & Daumen hoch.

    Okay, Rechenzeichen in " und " setzen hatte ich auch schon ausprobiert, aber nicht bei der Rechnung die beiden Zahlenparameter in ' und ' zu setzen.

    Warum das von Dir geht und meine Versuche nicht, das werde ich heute ergründen (versuchen nachzuvollziehen). Bringt jetzt mein If-Then durcheinander. aber ich wäre nicht Alina, wenn ich das ganze dann nicht noch mal ändere bzw. neu starte.

    In den Ruhenden liege die Kraft.

    Schönen Wochenstart allen zusammen.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Warum das von Dir geht und meine Versuche nicht, das werde ich heute ergründen (versuchen nachzuvollziehen).

    Ich vermute mal, weil du es nicht mit Execute() ausgeführt hast... ;)

    Wobei Execute immer ein "Geschmäckle" hat und ich es nur verwende, wenn keine Alternative besteht. Ich würde lieber eine Funktion dafür verwenden:

  • Moin BugFix.

    Sieht auch gut aus.

    Habe jetzt mal das If-Then für die ersten 10 Berechnungen erstellt.

    Dank Beitrag #2 kann ich nun schauen ob ich die Operatoren hier noch variabel benötige.
    Die If-Then Lösung habe ich gewählt und fertig gestellt, weil es den Beitrag #2 noch nicht gab, als ich gestartet bin mit den nachdenken und umsetzen.

    Spoiler anzeigen

    Da ich nicht immer die ganzen Rechentürme in die If-Then eingeben wollte, habe ich diese in vier Funktionen gepackt und rufe nur immer
    die Funktionen auf. Das ganze kann sicherlich einfacher gelöst werden, aber es komme die richtigen Aufrufe der Funktionen zu stande. So

    das ich es verstehe.

    Gerade bei den Startzahlen 5-10 musste ich erst einmal einen Weg der richtigen Abfrage finden. Diese If-Then soll ja als Schleife laufen und

    ab Startnummer 5, kommt ja noch dazu, das nicht nur die Startnummer, sondern auch eine weitere Variable dafür sorgt, das beim nächsten
    mal ein anderer Rechenblock gerechnet wird.

    Was sagt ihr dazu?

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ich würde das eher in eine (verschatelte) Case Abfrage einbauen anstatt der ganzen If-Then Blöcke.

    Auch würde ich anstatt der Verwendung der Globalen Startzahl in den Funktion Lokale Variablen bevorzugen und eine Übergabe an die Funktionen machen. (das ist aber rein persönlicher Geschmack).

    Und dein Local $i ist eigentlich Global (zumindest wenn das oben der ganze Code ist und nicht in einer Funktion steckt).

  • AutoIt
    If $_Startzahl = 1 Then
         block_1()
         Exit 
    EndIf

    Zur besseren Übersicht packe die block-Funktionen in eine gemeinsame Funktion

    und übergib per Parameter, welche Operation durchzuführen ist.

    Anhand deiner Bedingungen ist ersichtlich, dass du deine existierenden Variablen als Auswahlparameter nutzen kannst (in der Abbildung jeweils rot markiert):

    Du kannst noch weiter vereinfachen. Alle Operationen der Startzahlen 9 und 10 haben den identischen Ablauf:

    - Variable $_n_c bestimmt den Block

    - anschließend wird dieser Variable derselbe Wert in Abhängigkeit von _c zugewiesen

    Somit kannst du eine Funktion mit (ByRef $_n_c) aufrufen, anhand des Wertes des Parameters den Block ausführen und dann der Variablen selbst den neuen Wert zuweisen.

    Was ich aber nicht verstehe - wozu in jedem If-Statement das Exit? Damit kann doch niemals ein Ablauf erzeugt werden.

  • @Moombas
    Das Local ist nun ein Global. ;)

    BugFix
    Die "Exit" habe ich entfernt.

    ungearbeitet zur : Func block_n($n

    Spoiler anzeigen

    Ich habe aber noch ein Problem.

    Ich versuche es an Hand der Startnummer 5 zu erklären.

    Spoiler anzeigen
    Code
    If $_Startzahl = 5 And $_5_b = 2 Then
        block_n(2)
            $_5_b = 4
        EndIf
    
    If $_Startzahl = 5 And $_5_b = 4 Then
        block_n(4)
            $_5_b = 2
        EndIf

    Wenn es wahr ist, das $_Startnummer = 5 ist und $_5_b = 2 , dann soll er
    der Block_n(2) durchrechnen und die Variable $_5_b auf 4 ändern.
    .
    Danach soll er aber nicht sofort die $_Startnummer = 5 und $_5_b = 4 durchlaufen, sondern erst beim nächsten Durchgang und dann mit neuen Zahlen.
    Bei Startnummer 1 - 4 wechseln die Blöcke nicht, das passiert ja erst ab Startnummer 5.

    Wie kann ich das Problem lösen.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Der Teil läuft zwar, dennoch habe ich das Projekt abgebrochen. Ich komme da nicht weiter und in Excel läuft es, wenn auch nur mit Umwegen ohne Ende.

    Somit Beitrag geschlossen. :(

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Moin Alina,

    auch wenn Du das abgeschlossen hast, habe ich mir das jetzt doch einmal genauer angeschaut und glaube, dass ich das Problem verstanden habe. Deshalb noch mein Lösungsansatz:

    Mit Map()s könnte man das wahrscheinlich noch übersichtlicher gestalten.

    Einmal editiert, zuletzt von Velted (15. April 2022 um 10:35) aus folgendem Grund: 1. Hinweis auf Map()! 2. Bugfix in Case 10 und Erweiterung der Konsolenausgabe!

  • Danke. Ich sehe es mir am Wochenende an.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Global $_Startzahl = 1 ; wo kommt die her?

    Kommt später aus einer GUI. So war es geplant.

    Danke für Deine Lösung.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Alina 14. Mai 2022 um 18:54

    Hat das Label [ gelöst ] hinzugefügt.