Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › for ciklus
-
SzerzőBejegyzés
-
Szia Radu
szeretném feltölteni a tömböt az a-k értékeivel for ciklusba, de a StringConcatenate(„a”,q) parancs nem megfelelő, van esetleg valami parancs ami ide passzolna, vagy fogjak neki bepötyögtetni ;o)
string a0, a1, ….. a37,
tomb[4,38];a0=”e”; a1=”t”; …….. a37=”v”;
for(int q=0; q<=37; q++)
tomb[0,q]=StringConcatenate("a",q);Ha leírod pontosan a feladatot, lehet hogy könnyebben átlátom mit szeretnél.
A fenti kód alapján sejtelmem sincs, mi a végcél :)
szörnyű a fogalmazó készségem, ezért előre elnézést is kérek.
vannak string változók 38 darab, a0-tol a37-ig,
ezeknek az értékeit szeretném beíratni egy 38soros 4 oszlopos tömb első oszlopába, egymás alá.
írtam neki egy for ciklust de nem müködik.
úgy gondoltam, hogy a0 értékét(ami „e”) beírja a tomb[0,0] első sor első oszlopába , a1 értékét (ami t) beírja a tomb[0,1]második sor első oszlopába, és így tovább a37 ig.
úgy gondoltam, hogy StringConcatenate(„a”,q); paranccsal ha kialakítom az „a0” formát, akkor azt úgy ismeri fel mintha a0 változó lenne aminek az értéke „e”, és beírná a tömbbe az „e” értéket. DE „e” helyet „a0” beírás lett.
tehát következtetésem szerint a0 nem egyenlő „a0” val. És így nem tudom használni a for ciklust a tömbbe írásra.Már értem a kérdésed.
Sajnos ilyen megoldást nem tudsz elkövetni, mégpedig amiatt hogy az MQL4 nyelvben nincsen lehetőséged a változónévben (változót használni (pl. PHP-ben van). Ezutóbbi megállapításból természetesen csak a tömbök képeznek kivételt, hiszen ott a kulcsokra lehet hivatkozni változóval.
A tomb[0, q] megoldás még működik, de a fixen elnevezett változók (a1, a2, stb.) nem tehetőek dinamikussá.
A következő megoldást tudod alkalmazni: a fejlécben létrehozol egy adattömböt, amit init-ben feltöltesz a string adataiddal (kézzel kell sajna mind a 38 sort megadnod).
Tehát fejlécben:
string adattomb[38];
Init-ben:
adattomb[0] = a1; adattomb[1] = a2; adattomb[2] = a3; // satöbbi
Mivel ezután már dinamikusan használhatod a 38 adatodat, meg tudod oldani a feladatod az egyébként jól indult megoldásoddal.
szia
szeretném megkérdezni, hogy van e arra lehetőség, hogy a for ciklusban több FELTÉTEL-t és több KIFEJEZÉS-t írjunk?
az „atomb” tartalmát akartam átirni a „tomb”-be,
és én így képzeltem el, de nem működikfor(int v=0, int q=0; q<=39; q++, v++) tomb[v,q]=atomb[v,q];
szép napot.
A v változó kapcsán nem írtál értéknövelést.
A két ciklust simán egymásba ágyazhatod: a külső lefut 40 alkalommal, a belső meg 40 alkalomszor annyi alkalommal, ahányat megadsz a v-nek.
ez nem csak egy darab for ciklus?
a v++ gondoltam értéknövelésnek.
ha igy írom be a for ciklus fejlécét for(int v=0, int q=0; q<=39; q++, v++) akkor hiba üzenetet ad "variable expected"-elközben rá jöttem miről írtál nekem
ez lesz a megoldás ugye?for(int o=0; o<=5; o++) { for(int=s; s<=10; s++) tomb[o,s]=a[o,s]; }
bocs hogy teleirkálom az oldalad gyerekes kérdéseimmel.
ismét köszönöm szépen az irányadó válaszodValami ilyesmi, igen!
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.