Page 1 of 2

masyvas

Posted: 2014 Jan 31 23:48
by Spag
Kaip rasti masyvo ilgį? pvz: mass[10] reiksmes jame yra { 1, 2, 3, 4, 5 }, kaip surasti kiek jame yra reiksmiu ?

Re: masyvas

Posted: 2014 Feb 01 01:28
by beast

Code: Select all

itemCount = GetItemCount(mass, sizeof mass) GetItemCount(array[], size){    new count     for(new i = 0; i < size; i++)    {        if(array[i])            count++    }        return count}
O gal tam ir specifinė funkcija yra...

Re: masyvas

Posted: 2014 Feb 01 02:31
by hleV
Koks masyvo dydis tiek ir reikšmių (10).

Re: masyvas

Posted: 2014 Feb 01 11:48
by Spag
Hlev, ne taip supratai.

Yra masyvas, o jame max eina išsaugoti 10 reikšmių, bet jame išsaugota reikšmių yra tik penkios, tai kaip gauti tą išsaugotą reikšmių skaičių jame?

Su beast masyvo ilgio skaičiavimu, kai išsaugota 1 reikšmė, rodo kad išsaugota 77.


Mano kodas:

Code: Select all

#include <amxmodx> new masyvas[10];new itemCount = GetItemCount(masyvas, sizeof(masyvas)) public plugin_init(){    register_plugin("Masyvu testavimai", "1.0", "Spag");        register_clcmd("say /array", "funkcija");    register_clcmd("say_team /array", "funkcija");        register_clcmd("say /arraym", "funkcija2");    register_clcmd("say_team /arraym", "funkcija2");} public funkcija(id){       masyvas[id]++    client_printc(id, "Masyvo dydis: %d | Is viso yra masyvo reiksmiu: %d", sizeof(masyvas), itemCount);} public funkcija2(id){    masyvas[id]--    client_printc(id, "Masyvo dydis: %d | Is viso yra masyvo reiksmiu: %d", sizeof(masyvas), itemCount);} stock GetItemCount(array[], size){    new count;     for (new i = 0; i < size; i++)    {        if(array[i])            count++    }       return count;} stock client_printc(const id, const input[], any:...){    new count = 1, players[32];    static msg[191];    vformat(msg, 190, input, 3);        replace_all(msg, 190, "!g", "^x04"); // Green Color    replace_all(msg, 190, "!n", "^x01"); // Default Color    replace_all(msg, 190, "!t", "^x03"); // Team Color        if (id) players[0] = id; else get_players(players, count, "ch");    {        for (new i = 0; i < count; i++)        {            if (is_user_connected(players[i]))            {                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);                write_byte(players[i]);                write_string(msg);                message_end();            }        }    }}

Re: masyvas

Posted: 2014 Feb 01 12:09
by beast
Kad naudoji nesąmoningai... kaip tau išviso susikompiliavo...

Pirma reikia sukurti masyvą ar priskirti jo elementui reikšmę, o tik po to naudoti GetItemCount...

Re: masyvas

Posted: 2014 Feb 01 12:16
by Spag
beast wrote:Kad naudoji nesąmoningai... kaip tau išviso susikompiliavo...

Pirma reikia sukurti masyvą ar priskirti jo elementui reikšmę, o tik po to naudoti GetItemCount...
nesupratau... Masyvas tai sukurtas, iskvietus komanda masyvas igauna +1.. paaiškink konkrečiau arba su komentarais

Re: masyvas

Posted: 2014 Feb 01 12:36
by beast

Code: Select all

#include <amxmodx> new masyvas[10];new itemCount public plugin_init(){    register_plugin("Masyvu testavimai", "1.0", "Spag");       register_clcmd("say /array", "funkcija");    register_clcmd("say_team /array", "funkcija");       register_clcmd("say /arraym", "funkcija2");    register_clcmd("say_team /arraym", "funkcija2");} public funkcija(id){      masyvas[id]++    itemCount = GetItemCount(masyvas, sizeof(masyvas))    client_printc(id, "Masyvo dydis: %d | Is viso yra masyvo reiksmiu: %d", sizeof(masyvas), itemCount);} public funkcija2(id){    masyvas[id]--    itemCount = GetItemCount(masyvas, sizeof(masyvas))    client_printc(id, "Masyvo dydis: %d | Is viso yra masyvo reiksmiu: %d", sizeof(masyvas), itemCount);} stock GetItemCount(array[], size){    new count;     for (new i = 0; i < size; i++)    {    if(array[i])        count++    }       return count;} stock client_printc(const id, const input[], any:...){    new count = 1, players[32];    static msg[191];    vformat(msg, 190, input, 3);       replace_all(msg, 190, "!g", "^x04"); // Green Color    replace_all(msg, 190, "!n", "^x01"); // Default Color    replace_all(msg, 190, "!t", "^x03"); // Team Color       if (id) players[0] = id; else get_players(players, count, "ch");    {    for (new i = 0; i < count; i++)    {        if (is_user_connected(players[i]))        {        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);        write_byte(players[i]);        write_string(msg);        message_end();        }    }    }}

Re: masyvas

Posted: 2014 Feb 01 12:46
by Spag
Dabar supratau kame problema, o pvz. dabar su tuo ItemCount galėsiu tikrinti kitoje funkcijoje?

Code: Select all

public lalala(id){         if (ItemCount == 2)              ........}

Re: masyvas

Posted: 2014 Feb 01 13:36
by beast
Taip.

Re: masyvas

Posted: 2014 Feb 01 14:00
by hleV
Spag wrote:Hlev, ne taip supratai.

Yra masyvas, o jame max eina išsaugoti 10 reikšmių, bet jame išsaugota reikšmių yra tik penkios, tai kaip gauti tą išsaugotą reikšmių skaičių jame?
Ką aš ne taip supratau? Masyvo dydis - 10, reiškia reikšmių - 10.
new masyvas[10]; - masyvas turi 10 reikšmių, visos jos lygios 0. Jeigu tu nustatysi masyvas[0] = 1, tai nereiškia kad kituose masyvo elementuose nėra reikšmių.
Problema ne mano supratime, o tavo išsireiškime.

Jei tu pvz. ieškai kiek reikšmių masyve yra nelygios 0, tai beast'o parašyta funkcija tai padarys.