hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 19:15



Jelenlévő felhasználók

Jelenleg 217 felhasználó van jelen :: 0 regisztrált, 0 rejtett és 217 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 9 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: For ciklus megszakítása else-nél.
HozzászólásElküldve: 2018.10.31. 08:40 
Offline
Senior Tag

Csatlakozott: 2017.04.30. 17:21
Hozzászólások: 286
Megköszönt másnak: 49 alkalommal
Megköszönték neki: 66 alkalommal
Helló van egy for cikluska aminél azt szeretném, hogy ha a for ban van if elágazás else-vel együtt akkor az else részt ne írja annyiszor mint amennyi meg van adva a for-ban pld.

Kód:
for(new i;i < 5; i++) 
{
   if(g_valami[i][id] > 100)
   {
      ColorChat(0, GREEN, "%d", i) // tehát ezt itt 5x ki fogja írni a chatre
   }
   else
   {
      ColorChat(0, GREEN, "Sikertelen") // és itt az else-nél ezt a szöveget is 5x írja ki és én azt szeretném csak 1x írja ki chatre, megoldható ez valahogy?
   }


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: For ciklus megszakítása else-nél.
HozzászólásElküldve: 2018.10.31. 12:08 
Offline
Nagyúr
Avatar

Csatlakozott: 2016.03.05. 20:56
Hozzászólások: 663
Megköszönt másnak: 27 alkalommal
Megköszönték neki: 124 alkalommal
Azért írja ki 5x mert mind az 5 tömb értéke nagyobb mint 100

_________________
Global Offensive modok:

Global Offensive Mode 1.0
Global Offensive Mode 3.0
exodus Global Offensive 4.0


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: For ciklus megszakítása else-nél.
HozzászólásElküldve: 2018.10.31. 12:21 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2012.10.09. 13:48
Hozzászólások: 1439
Megköszönték neki: 174 alkalommal
aarpi. írta:
Helló van egy for cikluska aminél azt szeretném, hogy ha a for ban van if elágazás else-vel együtt akkor az else részt ne írja annyiszor mint amennyi meg van adva a for-ban pld.

Kód:
for(new i;i < 5; i++) 
{
   if(g_valami[i][id] > 100)
   {
      ColorChat(0, GREEN, "%d", i) // tehát ezt itt 5x ki fogja írni a chatre
   }
   else
   {
      ColorChat(0, GREEN, "Sikertelen") // és itt az else-nél ezt a szöveget is 5x írja ki és én azt szeretném csak 1x írja ki chatre, megoldható ez valahogy?
   }


Használhatod a continue;-t, ha a következő esetre szeretnél ugrani, vagy a break;-t, ha ki akarsz lépni a ciklusból.

_________________
Minden jót! :)

Ők köszönték meg BeepBeep nek ezt a hozzászólást: aarpi. (2018.10.31. 12:23)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: For ciklus megszakítása else-nél.
HozzászólásElküldve: 2018.10.31. 12:23 
Offline
Senior Tag

Csatlakozott: 2017.04.30. 17:21
Hozzászólások: 286
Megköszönt másnak: 49 alkalommal
Megköszönték neki: 66 alkalommal
exodus írta:
Azért írja ki 5x mert mind az 5 tömb értéke nagyobb mint 100

Nem vágod mit szeretnék vagy én írtam le szarul.
Leírom még1x:c
Ha az 5tömb értéke meg van több mint száz akkor chatre kiírja:
Kód:
1
2
3
4
5


De ha nincs meg akkor:
Kód:
Sikertelen
Sikertelen
Sikertelen
Sikertelen
Sikertelen


És én ezzel azt szeretném, hogy ha nincs meg azaz értek a sikertelent ne írja ki ennyiszer hanem csak 1x.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: For ciklus megszakítása else-nél.
HozzászólásElküldve: 2018.10.31. 13:01 
Offline
Lelkes

Csatlakozott: 2018.10.24. 13:11
Hozzászólások: 26
Megköszönt másnak: 4 alkalommal
Megköszönték neki: 5 alkalommal
Szia, nem tudok rajtad elmenni slovák barátom de próbálok segíteni.

  1. // Kizárás-megszakítás
  2. new hours,minutes,seconds;
  3. time(hours,minutes,seconds);
  4.  
  5. if(6 < hours && hours < 23)
  6.     return PLUGIN_CONTINUE;
  7.        
  8.        
  9. // Adott esetben futás
  10. new hours,minutes,seconds;
  11. time(hours,minutes,seconds);
  12.  
  13. if(22 < hours || hours < 6)

_________________
Régi Hydra ツ-vagyok

Lakhely Slovakia
Életév: 23
Foglalkozás Amxx,EventScript


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: For ciklus megszakítása else-nél.
HozzászólásElküldve: 2018.10.31. 14:10 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2012.10.09. 13:48
Hozzászólások: 1439
Megköszönték neki: 174 alkalommal
Heist írta:
Szia, nem tudok rajtad elmenni slovák barátom de próbálok segíteni.

  1. // Kizárás-megszakítás
  2. new hours,minutes,seconds;
  3. time(hours,minutes,seconds);
  4.  
  5. if(6 < hours && hours < 23)
  6.     return PLUGIN_CONTINUE;
  7.        
  8.        
  9. // Adott esetben futás
  10. new hours,minutes,seconds;
  11. time(hours,minutes,seconds);
  12.  
  13. if(22 < hours || hours < 6)



Mivel nem tudjuk, konkrétan mit akart, ezért nem hiszem, hogy ez egy jó megoldás lenne. Ha szükséges a funkció szempontjából ciklussal végigmenni a játékosokon, akkor ez nem alkalmazható.

_________________
Minden jót! :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: For ciklus megszakítása else-nél.
HozzászólásElküldve: 2018.11.02. 00:14 
Offline
Tag
Avatar

Csatlakozott: 2015.08.03. 19:26
Hozzászólások: 38
Megköszönt másnak: 8 alkalommal
Megköszönték neki: 3 alkalommal
aarpi. írta:
exodus írta:
Azért írja ki 5x mert mind az 5 tömb értéke nagyobb mint 100

Nem vágod mit szeretnék vagy én írtam le szarul.
Leírom még1x:c
Ha az 5tömb értéke meg van több mint száz akkor chatre kiírja:
Kód:
1
2
3
4
5


De ha nincs meg akkor:
Kód:
Sikertelen
Sikertelen
Sikertelen
Sikertelen
Sikertelen


És én ezzel azt szeretném, hogy ha nincs meg azaz értek a sikertelent ne írja ki ennyiszer hanem csak 1x.


Hátha megfelelő neked.
  1. new szamlalo=0;
  2. for(new i;i < 5; i++)
  3. {
  4.    if(g_valami[i][id] > 100)
  5.    {
  6.         ColorChat(0, GREEN, "%d", i) // tehát ezt itt 5x ki fogja írni a chatre
  7.    }
  8.    else
  9.    {
  10.       szamlalo++;
  11.    }
  12. }
  13. if(szamlalo>0)
  14. {
  15.      ColorChat(0, GREEN, "Sikertelen %d alkalommal", szamlalo) // Így csak egyszer írja ki a for ciklus lefutása után és azt is mutatja, hogy hányszor sikertelen
  16. }

_________________
Kép

Ők köszönték meg MASKED nek ezt a hozzászólást: aarpi. (2018.11.02. 07:33)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: For ciklus megszakítása else-nél.
HozzászólásElküldve: 2018.11.02. 10:12 
Offline
Tiszteletbeli
Avatar

Csatlakozott: 2012.10.09. 13:48
Hozzászólások: 1439
Megköszönték neki: 174 alkalommal
MASKED írta:
aarpi. írta:
exodus írta:
Azért írja ki 5x mert mind az 5 tömb értéke nagyobb mint 100

Nem vágod mit szeretnék vagy én írtam le szarul.
Leírom még1x:c
Ha az 5tömb értéke meg van több mint száz akkor chatre kiírja:
Kód:
1
2
3
4
5


De ha nincs meg akkor:
Kód:
Sikertelen
Sikertelen
Sikertelen
Sikertelen
Sikertelen


És én ezzel azt szeretném, hogy ha nincs meg azaz értek a sikertelent ne írja ki ennyiszer hanem csak 1x.


Hátha megfelelő neked.
  1. new szamlalo=0;
  2. for(new i;i < 5; i++)
  3. {
  4.    if(g_valami[i][id] > 100)
  5.    {
  6.         ColorChat(0, GREEN, "%d", i) // tehát ezt itt 5x ki fogja írni a chatre
  7.    }
  8.    else
  9.    {
  10.       szamlalo++;
  11.    }
  12. }
  13. if(szamlalo>0)
  14. {
  15.      ColorChat(0, GREEN, "Sikertelen %d alkalommal", szamlalo) // Így csak egyszer írja ki a for ciklus lefutása után és azt is mutatja, hogy hányszor sikertelen
  16. }


Nem fogja 5x kiírni chatre, ha kisebb, mint 100. Ha 2 elem kisebb, akkor csak háromszor fogja.
Végülis igen, használhatod a megszámlálást. De akkor a ciklusban a feltételt módosíthatod és még tovább rövidíthetsz a kódon, elhagyva az else ágat. Lásd az alábbi plugint. Azonban ez csak egy előfeltételre igaz.

  1. public teszt() {  
  2.   new n[10] = {101, 74, 133, 63, 221, 100, 101, 102, 103, 104};
  3.   new szamlalo=0;
  4.   for(new i;i < 10; i++)  {
  5.     if (n[i] < 100) { // Előfeltétel
  6.       szamlalo++;
  7.       log_amx("a, i: %d", i);
  8.       continue;
  9.     }
  10.  
  11.     log_amx("b, i: %d", i);
  12.   }
  13.  
  14.   if(szamlalo>0)
  15.   {
  16.     log_amx("szamlalo: %d", szamlalo);
  17.   }
  18. }


Eredmény:
[teszt.amxx] b, i: 0
[teszt.amxx] a, i: 1
[teszt.amxx] b, i: 2
[teszt.amxx] a, i: 3
[teszt.amxx] b, i: 4
[teszt.amxx] b, i: 5
[teszt.amxx] b, i: 6
[teszt.amxx] b, i: 7
[teszt.amxx] b, i: 8
[teszt.amxx] b, i: 9
[teszt.amxx] szamlalo: 2


A kód tehát így rövidülne:
  1. new szamlalo = 0;
  2.     for(new i;i < 5; i++) {
  3.        if(g_valami[i][id] < 100) { // Ha a valami eleme < 100
  4.             szamlalo++
  5.             continue; // Következő elemre ugrunk, nem fut tovább a ciklus
  6.        }
  7.        // Ha öbb feltétel nincs, nem szükséges else ág, a continue; utasítás miatt a ciklus nem fut tovább így nincs mit tovább ellenőrizni és a következő elemre ugrik. Tehát jöhet a kód további része.
  8.        ColorChat(0, GREEN, "%d", i)
  9.     }
  10.  
  11.     if(szamlalo > 0) {
  12.          ColorChat(0, GREEN, "Sikertelen %d alkalommal", szamlalo) // Így csak egyszer írja ki a for ciklus lefutása után és azt is mutatja, hogy hányszor sikertelen
  13.     }

_________________
Minden jót! :)

Ők köszönték meg BeepBeep nek ezt a hozzászólást (összesen 2): Heist (2018.11.02. 10:17) • aarpi. (2018.11.02. 11:11)
  Népszerűség: 4.55%


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: For ciklus megszakítása else-nél.
HozzászólásElküldve: 2018.11.02. 11:13 
Offline
Senior Tag

Csatlakozott: 2017.04.30. 17:21
Hozzászólások: 286
Megköszönt másnak: 49 alkalommal
Megköszönték neki: 66 alkalommal
Köszönöm nektek, hogy ilyen segítőkészek vagytok viszont amit beep írt először a break tökéletes számomra:D

Esetleg ha valaki használná így használja:
Kód:
else
{
Colorchat(id, GREEN, "Sikertelen")
break
}

Ők köszönték meg aarpi. nek ezt a hozzászólást: HellEnergY (2018.11.02. 16:59)
  Népszerűség: 2.27%


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 9 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 30 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole