Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 890

 
evillive:

Es geht ungefähr so:


Danke, aber das ist nicht ganz richtig. Sie haben mehrere Abschlussbedingungen für einen Magier und wollen das Gegenteil.

Ich habe mir das ausgedacht:

void CritCloseBuy()
   {
    if (OrderSelect(Ord, SELECT_BY_POS, MODE_TRADES)==true)
    {
      if ((OrderMagicNumber()==10011&&10033)&&(...условия1...)
      {
        ord_close=OrderClose(OrderTicket(),0.1, Bid, 0, Red);
          if (ord_close = false)
          {
            Comment("Закрытие позиции БАЙ завершилось с ошибкой #",GetLastError());
          }
            else 
              {           
              Ord=0;              
              }
           return;
           }
           if ((OrderMagicNumber()==10022&&10044&&10066)&&(...новые условия...))
      {
        ord_close=OrderClose(OrderTicket(),0.1, Bid, 0, Red);
          if (ord_close = false)
          {
            Comment("Закрытие позиции БАЙ завершилось с ошибкой #",GetLastError());
          }
            else 
              {           
              Ord=0;              
              }
           return;
           }           
          }
         }
Wird es funktionieren? Oder was ist falsch?
 
rapid_minus:


Danke, aber das ist nicht ganz das, was Sie brauchen. Sie haben mehrere Abschlussbedingungen für einen Magier, aber Sie brauchen das Gegenteil.

So habe ich es mir ausgedacht:

Wird es funktionieren? Oder was ist falsch?

Es ist... Wie soll ich es vorsichtig ausdrücken...

Wozu dann derSchalter, wenn der Code für einen Magier ist?

Sie können aber auch Ifhes verwenden, wenn Sie wollen, aber wir müssen uns Gedanken über die Bedingungen machen, denn die, die Sie jetzt haben, sind nicht so, wie sie sein sollten.

Zum Beispiel

if ((OrderMagicNumber()==10011&&10033)&&(...)

führt das nicht zu einem Fehler bei der Kompilierung?

 
evillive:

Das ist... Wie soll ich es vorsichtig ausdrücken...

Wofür ist dann der Schalter, wenn der Code für einen Magier ist?

Vielleicht verstehe ich den Schalter nicht, aber in seiner Ausprägung gibt es einen Magier, der mit mehreren Varianten von Schließungsbedingungen verglichen wird.

ZS: Ich habe die Fortsetzung gesehen. Ich habe es noch nicht kompiliert, da ich den Code noch nicht fertiggestellt habe. Zahlen können nicht mit einer UND-Verknüpfung aufgezählt werden?

Wie komme ich dann aus der Sache heraus? Für jeden Zauberer wiederholen?

ZZZY: Eigentlich heißt es nicht AND, sondern OR.

 
rapid_minus:

Wie kommt man dann aus der Sache heraus? Wiederholen Sie das für jeden Zauberer?

Ja, ja.


Und über einen Schalter sollten Sie noch eine Fibel lesen, dort wird nämlich eine beliebige Anzahl von Varianten verarbeitet (Fall 0:..., Fall 1:..., Fall N:..., wobei Zahl = Wert eines Zauberers). Ich war zu faul, um das Beispiel zu schreiben, also hatte ich nur genug Zeit, um zwei Magier und die Standardoption zu schreiben ;)

 
evillive:
Ja

Ich schätze, Sie müssen nicht für jeden Magier die OP ausschreiben?
 
rapid_minus:

Ich schätze, Sie müssen nicht für jeden Zauberer eine OP schreiben, oder?
Wir sollten, Fedja, wir sollten (c)
 
evillive:

Ja, ja.


Und lesen Sie noch eine Fibel über einen Schalter, dort wird im Gegenteil eine beliebige Anzahl von Varianten verarbeitet (Fall 0:..., Fall 1:..., Fall N:..., wobei Zahl = Wert eines Zauberers). Ich war zu faul, um das Beispiel zu schreiben, also hatte ich nur genug Zeit, um zwei Magier und die Standardvariante zu schreiben ;)

Vielen Dank für die Erläuterung des Schalters. Ich habe es falsch verstanden.
 

Bei der Umstellung kommt es jedoch bei verschiedenen Magiern zur gleichen Wiederholung der gleichen Schlussbedingung wie bei ifs.

Die Frage ist nur, welche Variante mehr Bits verschlingen wird.

 
rapid_minus:

Bei der Umstellung kommt es jedoch bei verschiedenen Magiern zur gleichen Wiederholung der gleichen Schlussbedingung wie bei ifs.

Die Frage ist nur, welche Variante mehr Bits verschlingen wird.

Habe ich etwas verpasst - haben wir den Code bereits optimiert?
 
rapid_minus:

Bei der Umstellung kommt es jedoch bei verschiedenen Magiern zur gleichen Wiederholung der gleichen Schlussbedingung wie bei ifs.

Die Frage ist nur, welche Variante mehr Bits frisst.

Dies ist die gleiche Verzweigung wie if(), sie sieht nur übersichtlicher aus und ist einfacher zu kodieren, wenn drei oder mehr einzelne Auswahlmöglichkeiten von ganzen Zahlen zur Verfügung stehen. Wenn es nur zwei Optionen gibt oder wenn nicht-numerische Ausdrücke verglichen werden, dann nur if(). Und mit if() können Sie mehrere Optionen kombinieren (if( option1 && option2 || option3 ) {action;}), während switch nicht direkt verwendet werden kann, sondern nur jeweils eine.

Schalter
if()
Schalter (x)
{
Fall 1: Handeln nach Variante 1; break;
Fall 2: Aktion bei Option 2; break;
Fall 3: Aktion bei Option 3; break;
default: Standardaktion; break;
}
if( case1 ) { Aktion im Fall 1; }
else if( option2 ) { Aktionen nach Option 2; }
else if( option3 ) { Aktionen nach Option 3; }
else { Standardaktion; }