[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 436

 

Es gibt ein ArrayTemp[100], in dem alle Elemente vom Typ Ganzzahl sind und in aufsteigender Reihenfolge von 1 bis 100 sortiert sind.

Ich muss die ersten 1-50 Elemente entfernen und die Array-Größe auf [50] reduzieren.

Ich dachte mir, ich kopiere die zweite Hälfte des Arrays in ein temporäres Verzeichnis, ändere die Größe des Originals und kopiere dann vom temporären in das Original zurück.

- Gibt es einen einfacheren Weg?

Danke!

 
chief2000:

Es gibt ein ArrayTemp[100], in dem alle Elemente vom Typ Ganzzahl sind und in aufsteigender Reihenfolge von 1 bis 100 sortiert sind.

Ich muss die ersten 1-50 Elemente entfernen und die Array-Größe auf [50] reduzieren.

Ich dachte mir, ich kopiere die zweite Hälfte des Arrays in ein temporäres Verzeichnis, ändere die Größe des Originals und kopiere dann vom temporären in das Original zurück.

- Gibt es einen einfacheren Weg?

Danke!



Sie könnten in absteigender Reihenfolge sortieren und dann einfach die Größe des Arrays ändern. Ich denke, das wäre schneller. Wer weiß das schon?)
 
Figar0:

Sie könnten in absteigender Reihenfolge sortieren und dann einfach die Größe des Arrays ändern. Ich denke, das wäre schneller. Wer weiß das schon?)

Ich danke Ihnen!

 
Vinin:

Gute erste Schritte, Olga Alexandrowna. 330 Zeilen Code


Guten Tag! Ich weiß nicht, ob ich das als Lob annehmen soll oder umgekehrt, aber auf jeden Fall danke für die Antwort.

Ich kann die Lösung leider nicht finden, deshalb halte ich es so - die Hauptsache ist Qualität und Kompetenz, und damit, wie ich verstehe, habe ich eine Lücke, weil der Code nicht funktioniert.

Ich warte sehr auf eine Antwort auf meine Frage.....

 

Gute Leute helfen, die können

Hier ist der Code, in dem der Haftbefehl nach Ablauf der Zeit entfernt werden soll, dies ist die Bedingung

MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber

Wie kommt es, dass, wenn ich diese Bedingung in den ersten if-Operator einfüge, der andere Operator, der sich darin befindet, diese Bedingung nicht beachtet?

Das heißt, dieser Code funktioniert nicht und löscht alle ausstehenden Aufträge auf einmal.

  for(int counter=0;counter<OrdersTotal();counter++)
    {
    if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES) == false) break;

    if(MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
      if(OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
        {
        OrderDelete(OrderTicket());
        }
        
      }
    }

Und dieser Code funktioniert und löscht die Aufträge nicht auf einmal.

  for(int counter=0;counter<OrdersTotal();counter++)
    {
    if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES) == false) break;

    if(MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
      if(OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP && MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber)
        {
        OrderDelete(OrderTicket());
        }
        
      }
    }
 

Können Sie mir sagen, wofür Haltepunkte verwendet werden? Ich habe das Forum durchsucht, kann aber keine Informationen finden. Wie verwende ich es?

 
chief2000:

Es gibt ein ArrayTemp[100], in dem alle Elemente vom Typ Ganzzahl sind und in aufsteigender Reihenfolge von 1 bis 100 sortiert sind.

Ich muss die ersten 1-50 Elemente entfernen und die Array-Größe auf [50] reduzieren.

Ich dachte mir, ich kopiere die zweite Hälfte des Arrays in ein temporäres Verzeichnis, ändere die Größe des Originals und kopiere dann vom temporären in das Original zurück.

Sie könnten nichts tun und das 50. Element als Ausgangselement betrachten. ArrayCopy wird ohnehin einige Zeit in Anspruch nehmen.
 
sss2019:

Gute Leute helfen, die können

Hier ist der Code, in dem der Haftbefehl nach Ablauf der Zeit entfernt werden soll, dies ist die Bedingung

Wie kommt es, dass, wenn ich diese Bedingung in den ersten if-Operator einfüge, der andere Operator, der sich darin befindet, diese Bedingung nicht beachtet?

Das heißt, dieser Code funktioniert nicht und löscht alle ausstehenden Aufträge auf einmal.

Und dieser Code funktioniert und löscht die Aufträge nicht auf einmal.

Im Allgemeinen empfiehlt es sich, die Bestellungen ab der letzten durchzusehen. Im zweiten Fall sollten Sie sich nicht scheuen, die Bedingung in Klammern zu setzen.

 
fore-x:

Können Sie mir sagen, wofür Haltepunkte verwendet werden? Ich habe das Forum durchsucht, kann aber keine Informationen finden. Wie verwende ich es?

Das funktioniert nicht. Ich habe es in der Annahme erstellt, dass es ein richtiger Debugger sein würde, aber das ist nicht der Fall.
 
splxgf:
Sie können nichts tun und das 50. Element als das ursprüngliche Element betrachten. ArrayCopy wird auf jeden Fall einige Zeit in Anspruch nehmen.

Der Punkt ist, dass das Array in regelmäßigen Abständen mehr Elemente enthalten muss (expandieren), was die Geschwindigkeit der Optimierung/Tests beeinträchtigt. Deshalb bringe ich sie in "günstigen" Momenten wieder in den Ausgangszustand zurück.

Die Lösung von Figar0: Sie war einfacher als meine und funktioniert gut.

Ich danke Ihnen!