Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43266
Benutzer: 7.222
Aktive Benutzer: 72
Links: 84
Wir begrüßen unseren neuesten Benutzer: Mane
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak
vor 2 Wochen
- Amateur
vor 2 Wochen
- infos1982

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 318
Gesamt: 318
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 02.01.21
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
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
  #2 (permalink)  
Alt 02.01.21
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
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.
  #3 (permalink)  
Alt 02.01.21
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
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,"]");
  #4 (permalink)  
Alt 02.01.21
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
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
Thema geschlossen

Lesezeichen


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 +2. Es ist jetzt 09:27 Uhr.





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