Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

PHP

Algorytm łączący warunki instrukcji w przyzwoitej złożoności

php algorytm multiwarunki warunki przyzwoita złożoność łączenie warunków

  • Zamknięty Temat jest zamknięty
5 odpowiedzi w tym temacie

#1 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 30.08.2012 17:31

Witam,

Czy ktoś z Was zna algorytm na łączenie warunków instrukcji (najlepiej w PHP) w jakiejś przyzwoitej złożoności?
Mam na myśli łączenie warunków w bloki, np. zamiast
if(gRound>=1){
give_item(id, "weapon_hegrenade");
}
if(gRound>=2 && gRound<=3){
give_item(id, "weapon_flashbang");
}
if(gRound<=2){
give_item(id, "weapon_smokegrenade");
}
if(gRound>=2 && gRound<=4 && get_user_team(id)==2){
give_item(id, "item_thighpack");
}
if(gRound<=2){
give_item(id, "item_nvgs");
}
uzyskać połączone warunki, tj. przykładowo
if(gRound>=1){
give_item(id, "weapon_hegrenade");
}
if(gRound<=2){
give_item(id, "weapon_smokegrenade");
give_item(id, "item_nvgs");
}
if(gRound>=2){
if(gRound<=3){
give_item(id, "weapon_flashbang");
}
if(gRound<=4 && get_user_team(id)==2){
give_item(id, "item_thighpack");
}
}


#2 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 840
Czempion

  • Postów:1485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 30.08.2012 17:56

Dla tego konkretnego przypadku można to zrobić tak:

switch( true )
{
case( gRound >= 1 ): give_item( id, "weapon_hegrenade" )
case( gRound <= 2 ): {
give_item( id, "weapon_smokegrenade" );
give_item( id, "item_nvgs" );
}
case( gRound <= 3 ): give_item(id, "weapon_flashbang");
case( gRound <= 4 ): if( get_user_team( id ) == 2 ) give_item( id, "item_thighpack" );
}

  • +
  • -
  • 0

marwit-0.png


#3 Gość_21977_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 31.08.2012 07:55

Ogólnie chodzi mi o algorytm, który by wybierał odpowiednie warunki i je łączył w przyzwoitym czasie, bo na razie wyskrobałem funkcje klasy, które generują taki kod:
if(gRound>=1){
give_item(id, "weapon_hegrenade");
}
if(gRound<=3 && gRound>=2){
give_item(id, "weapon_flashbang");
}
if(gRound<=2){
give_item(id, "item_nvgs");
give_item(id, "weapon_smokegrenade");
}
if(gRound<=4 && gRound>=2 && get_user_team(id)==2){
give_item(id, "item_thighpack");
}
Jak widać, niestety, warunek gRound>=2 jest podwójnie, niepotrzebnie powtórzony.
I tutaj tkwi problem, a raczej w optymalizacji kodu / zastosowaniu innego algorytmu.

A oto kod PHP:
Spoiler


I dokumentacja:
Spoiler


#4 Portek

    Kończymy zabawę, permanentna emerytura!

  • Przyjaciel

Reputacja: 976
Master

  • Postów:3007
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Częstochowa
Offline

Napisano 31.08.2012 08:04

Nie ma chyba czegoś takiego, bo jak niby to miało by wyglądać? Switch w tym wypadku to właściwie ten zapis, przy użyciu innej funkcji, aczkolwiek chyba jako jedyny jako tako spełnia Twoje wymagania.
  • +
  • -
  • 1

Dołączona grafika
IP: ts3.cserwerek.pl


#5 Gość_21977_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 31.08.2012 08:19

W takim razie chyba nie ma co się nad tym rozwlekać.
Dzięki za odpowiedź.

#6 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 840
Czempion

  • Postów:1485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 31.08.2012 17:02

Możecie jeszcze skorzystać z rejestru flag. Chyba byłoby to optymalniejsze.
  • +
  • -
  • 0

marwit-0.png






Również z jednym lub większą ilością słów kluczowych: php, algorytm, multiwarunki, warunki, przyzwoita złożoność, łączenie warunków

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych