Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4621
Beiträge: 41668
Benutzer: 6.996
Aktive Benutzer: 183
Links: 82
Wir begrüßen unseren neuesten Benutzer: baalexeyfranesay3088
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- baalexeyfr...
vor 6 Tagen
- Tbened
vor einer Woche
- coinboy
vor einer Woche
- Kat34r
vor 2 Wochen
- Goldstream

Onlineuser
'Wer ist online' anzeigen Benutzer: 2
Gäste: 100
Gesamt: 102
Team: 0
Team:  
Benutzer:  Indikator-Trading, traderdoc
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor 2 Wochen
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 464
AVT befindet sich auf einem aufstrebenden Ast
Standard 2-dimensionales Array?

Ich krieg das einfach nicht hin und wäre Euch dankbar, wenn Ihr mir helfen könntet.
Es geht hierbei um die Möglichkeit von Reihenfolgen.
(Das Herausfinden einer Reihenfolge ist kein Problem.)
Das Problem wird nachher der spätere Vergleich.

Aufgabe: Ein Array initialisieren, das feste integer Werte enthält.

Beispiel: Bei 2 Werten habe ich 2 Möglichkeiten, nämlich
- erst 1, dann 2
- erst 2, dann 1
Ich kann also sagen, das 1 Array enthält 2 feste Werte, nämlich 1 und 2
und das 2. Array enthält 2 feste Werte, nämlich 2 und 1.
Code:
int Array1[2]={1,2}; //2 Werte: 1 und 2
int Array2[2]={2,1}; //2 Werte: 2 und 1
Wenn ich nun ein gefundenes Ergebnis vergleichen will, kann ich das nur mit einer if-Abfrage machen
Code:
if(ErgebnisArray[0]==Array1[0]) Is12;
if(ErgebnisArray[0]==Array2[0]) Is21;
Problem: Bei höheren Werten (3,4,5...) steigen die Möglichkeiten fakultätsartig.
Das heißt, bei 3 hätte ich schon 6 feste Arrays zu definieren und dementsprechend auch 6 if-Abfragen.
Um das ganze in einen Loop zu packen, müßte ich die Arrays zu einem zusammenfassen, etwa so:
Code:
int ArrayBis2[hat 2 Zeilen][mit 2 Werten]={ ?1,2? , ?2,1?};
Egal wie ich versuche, das zu schreiben, ich krieg nur Fehlermeldungen.
Mache ich einen Denkfehler, habe ich ein Verständnisproblem?

Wäre nett, wenn mich jemand hier wieder auf die Spur bringen könnte.
Danke. AVT
Mit Zitat antworten
  #2 (permalink)  
Alt vor 2 Wochen
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.486
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Also das Array

int arr[2][2] = {1,2,2,1};

wird über Print folgendes Ergebniss zu den 4 Feldern ausgeben:

1,2,2,1

für [0][0],[0][1],[1][0],[1][1]

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Mit Zitat antworten
  #3 (permalink)  
Alt vor 2 Wochen
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 175
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

So wie ich das verstehe, möchtest du das ja möglichst flexibel haben.
Einzelne If-Abfragen brauchst du auf jeden Fall nicht hinzuzufügen, sondern einfach in einer For-Schleife, welche beider Array durchgeht (Wenn du nicht ein zweidimensionales machen möchtest) abfragen.

Code:
   ArrayResize(MyArrayA,4,0);
   ArrayResize(MyArrayB,4,0);
   MyArrayA[0] = 0;
   MyArrayA[1] = 1;
   MyArrayA[2] = 2;
   MyArrayA[3] = 3;
   
   MyArrayB[0] = 3;
   MyArrayB[1] = 2;
   MyArrayB[2] = 1;
   MyArrayB[3] = 0;
   
   for(int i=0 ; i<ArraySize(MyArrayA) ; i++)
    for(int j=0 ; j<ArraySize(MyArrayB) ; j++)
      if(MyArrayA[i] == MyArrayB[j])
         Print("MyArrayA["  , i , "] == MyArrayB[",j,"]");
Mit Zitat antworten
  #4 (permalink)  
Alt vor 2 Wochen
AVT AVT ist offline
Premium Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 464
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Also das Array

int arr[2][2] = {1,2,2,1};

wird über Print folgendes Ergebniss zu den 4 Feldern ausgeben:

1,2,2,1

für [0][0],[0][1],[1][0],[1][1]

traderdoc
Danke @traderdoc.
So wie Du die Definition geschrieben hast, das war mir nicht klar,daß man die quasi einfach alle hintereinander schreiben kann.
(auch wenn ich da lieber ein Leerzeichen zwischen den Kombis hätte - so rein wegen der Übersicht)

Ich habe das dann anfangs so probiert (funzt), mit Werteloop:
Code:
int ArrayBis2[2][2]={ {1,2}, {2,1} }; //Wertekombination in {}Klammer

for (int k=0; k<2; k++)
{
   Print("---");
   for(int y=0; y<2; y++)
   {
      Print(" ArrayBis2 Nr k: ",(int)k," Nr y: ",(int)y,
            " Index k[y]: ",IntegerToString(ArrayBis2[k][y] );
   }
}
//Resultat:
//ArrayBis2 Nr k: 1 Nr y: 1 Index k[y]: 1
//ArrayBis2 Nr k: 1 Nr y: 0 Index k[y]: 2
//---
//ArrayBis2 Nr k: 0 Nr y: 1 Index k[y]: 2
//ArrayBis2 Nr k: 0 Nr y: 0 Index k[y]: 1
//---
Allerdings bin ich jetzt auf die Idee gekommen, das ganze geht einfacher mit einem string Vergleich.
Ich will ja wissen, welche Möglichkeit ich grade erwischt habe:
- wenn der string "1,2" lautet, ist es die 1. Möglichkeit
- wenn der string "2,1" lautet, ist es die 2. Möglichkeit
Also einfach: string ArrayBis2[2]={"1,2","2,1"};
Bedeutet allerdings das Herausfinden für das Ergebnis umschreiben auf string, aber das krieg ich hin.

Noch mal Danke, wieder was dazugelernt.
AVT
Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 Uhr.





Die Suchmaschine - Der Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2021 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2020 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------