Szerző Téma: findindex  (Megtekintve 2148 alkalommal)

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
findindex
« Dátum: 2012. július 22. - 22:52:03 »
+2 Show voters
Sziasztok.
Ezt a kódot körülbelül 5 perce írtam, Zinthos egy másik programnyelvben ugyanezt megalkotta (python), és én is megpróbáltam pawn-ban. Nem kellett nagy tehetség hozzá, de azért ki teszem ide is ezt a kódot, mert hátha szüksége lesz rá valakinek egyszer..
A kód
 
stock findindex(const str1[], const character[])
{
    new
value = -1,
len,
karakter[1]
;
len = strlen(str1);
    for(new c; c < len; c++)
    {
strmid(karakter, str1, c, c+1);
        if(!strcmp(karakter, character))
        {
   value = c;
        break;
        }
    }
    return value;
}

 
Teszt:
 
main()
{
print(\"findindex(\'asd\', \'s\')\");
findindex(\"asd\", \"s\");
print(\"findindex(\'vakáció\', \'s\')\");
findindex(\"vakáció\", \"s\");
print(\"findindex(\'kecske\', \'e\')\");
findindex(\"kecske\", \"e\");
print(\"findindex(\'kettõ kecske\', \'e\')\");
findindex(\"kettõ kecske\", \"e\");
print(\"findindex(\'magas\', \'s\')\");
findindex(\"magas\", \"s\");
}

 
Eredmény:
 
[22:45:31] findindex(\'asd\', \'s\')
[22:45:31] asd szóban a s karakter indexe: 1
[22:45:31] findindex(\'vakáció\', \'s\')
[22:45:31] Nincs index találat a vakáció szóban a s karakterre!
[22:45:31] findindex(\'kecske\', \'e\')
[22:45:31] kecske szóban a e karakter indexe: 1
[22:45:31] findindex(\'kettõ kecske\', \'e\')
[22:45:31] kettõ kecske szóban a e karakter indexe: 1
[22:45:31] findindex(\'magas\', \'s\')
[22:45:31] magas szóban a s karakter indexe: 4

 
( A tesztnél még tartalmazott a függvény print függvényeket, innen jöttek az információk (: )
Mielõtt valaki belekötne, az index sorszámot jelent ez esetben, és a sorszám 0-nál kezdõdik. (:
« Utoljára szerkesztve: 2012. július 22. - 23:37:03 írta Pedro »

Nem elérhető Mike.

  • 720
    • Profil megtekintése
findindex
« Válasz #1 Dátum: 2012. július 22. - 23:01:46 »
0 Show voters
Jó lett. :D

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
findindex
« Válasz #2 Dátum: 2012. július 22. - 23:09:21 »
+1 Show voters
Futtasd le:
 

printf(\"%d\", strfind(\"asd\", \"s\"));
printf(\"%d\", strfind(\"vakáció\", \"s\"));
printf(\"%d\", strfind(\"kecske\", \"e\"));
printf(\"%d\", strfind(\"kettõ kecske\", \"e\"));
printf(\"%d\", strfind(\"magas\", \"s\"));

 
Eredmények:
 

[23:08:57] 1
[23:08:57] -1
[23:08:57] 1
[23:08:57] 1
[23:08:57] 4

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
findindex
« Válasz #3 Dátum: 2012. július 22. - 23:29:42 »
0 Show voters
Idézetet írta: DrAkE date=1342991361\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"24866\" data-ipsquote-contentclass=\"forums_Topic
Futtasd le:
 

printf(\"%d\", strfind(\"asd\", \"s\"));
printf(\"%d\", strfind(\"vakáció\", \"s\"));
printf(\"%d\", strfind(\"kecske\", \"e\"));
printf(\"%d\", strfind(\"kettõ kecske\", \"e\"));
printf(\"%d\", strfind(\"magas\", \"s\"));

 
Eredmények:
 

[23:08:57] 1
[23:08:57] -1
[23:08:57] 1
[23:08:57] 1
[23:08:57] 4

 

igen, és?
milyen értéket kapjon, ha ne -1 et, mikor nincs találat?: D:D:D:D

Nem elérhető Spedy

  • 227
    • Profil megtekintése
findindex
« Válasz #4 Dátum: 2012. július 23. - 09:09:38 »
0 Show voters
Jó lett Grat

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
findindex
« Válasz #5 Dátum: 2012. július 23. - 09:43:44 »
+1 Show voters
Idézetet írta: Pedro date=1342992582\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"24866\" data-ipsquote-contentclass=\"forums_Topic


Futtasd le:
 

printf(\"%d\", strfind(\"asd\", \"s\"));
printf(\"%d\", strfind(\"vakáció\", \"s\"));
printf(\"%d\", strfind(\"kecske\", \"e\"));
printf(\"%d\", strfind(\"kettõ kecske\", \"e\"));
printf(\"%d\", strfind(\"magas\", \"s\"));

 
Eredmények:
 

[23:08:57] 1
[23:08:57] -1
[23:08:57] 1
[23:08:57] 1
[23:08:57] 4

 

igen, és?
milyen értéket kapjon, ha ne -1 et, mikor nincs találat?: D:D:D:D
 
[/quote]
Na most már lehet, hogy nem vetted észre, de az én kódomban nem findindex szerepel.

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
findindex
« Válasz #6 Dátum: 2012. július 23. - 10:10:12 »
+1 Show voters
DrAkE sztem arra céloz, hogy pont ugyanez létezik alapból a string.inc-ben.

Nem elérhető Pedró

  • 3341
  • 2014 © Az év Szkriptere
    • Profil megtekintése
findindex
« Válasz #7 Dátum: 2012. július 23. - 11:18:58 »
0 Show voters
asd, tényleg nem vettem észre.
hát már azért nem fogom eltüntetni, hamár 5 percet szenvedtem vele. (:

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
findindex
« Válasz #8 Dátum: 2012. július 23. - 11:34:26 »
0 Show voters
Na akkor hogy valami biztatót is mondjak, gyorsabb mint az strfind. Mondjuk ez nem meglepõ, jellemzõ, hogy minden saját kézzel írt sztring kezelõ függvény gyorsabb, mint a string.inc-ben lévõ eredetik.. :)

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
findindex
« Válasz #9 Dátum: 2012. július 23. - 11:37:47 »
0 Show voters
Lehet, de azt is vedd figyelembe, hogy ezzel csak egy karaktert lehet, míg strfinddal tetszõlegesen beírt szövegrészt is lehet keresni!

Nem elérhető instant

  • 2778
  • ZzzzzZ
    • Profil megtekintése
findindex
« Válasz #10 Dátum: 2012. július 23. - 11:55:50 »
0 Show voters
szép

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
findindex
« Válasz #11 Dátum: 2012. július 23. - 12:25:14 »
0 Show voters
Ez igaz, épp ezért nem is használok én külön függvényt erre, nekem nem számít az a kis különbség.

findindex
« Válasz #12 Dátum: 2012. július 24. - 19:57:49 »
0 Show voters
A kód neve lehetne findcharacter is talán.
Na mindegy írtam egy változatot én is:
 
stock
findcharacter(const string[], const sub[])
{
new
ch = -1;
while(string[++ch] && string[ch] != sub[0]) {}
return (string[ch])?(ch):(-1);
}

 

   printf(\"%d\", findcharacter(\"asd\", \"s\"));
printf(\"%d\", findcharacter(\"vakáció\", \"s\"));
printf(\"%d\", findcharacter(\"kecske\", \"e\"));
printf(\"%d\", findcharacter(\"kettõ kecske\", \"e\"));
printf(\"%d\", findcharacter(\"magas\", \"s\"));
[/quote]
Edit:
Javítva egy apró hiba.
« Utoljára szerkesztve: 2012. július 25. - 11:13:16 írta ɐʞzssǝlosz »

findindex
« Válasz #13 Dátum: 2012. július 24. - 21:58:11 »
0 Show voters
Grat.  :shifty:

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
findindex
« Válasz #14 Dátum: 2012. július 24. - 22:19:24 »
0 Show voters
Idézetet írta: ɐʞzssǝlosz date=1343152669\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"24866\" data-ipsquote-contentclass=\"forums_Topic
A kód neve lehetne findcharacter is talán.
Na mindegy írtam egy változatot én is:
 
stock
findcharacter(const string[], const sub[])
{
new
ch;
while(string[++ch] && string[ch] != sub[0]) {}
return (string[ch])?(ch):(-1);
}

 

   printf(\"%d\", findcharacter(\"asd\", \"s\"));
printf(\"%d\", findcharacter(\"vakáció\", \"s\"));
printf(\"%d\", findcharacter(\"kecske\", \"e\"));
printf(\"%d\", findcharacter(\"kettõ kecske\", \"e\"));
printf(\"%d\", findcharacter(\"magas\", \"s\"));

[/quote]
Hármas operátornál gyorsabb az if-else, bár akkor már 1 sorral hosszabb a kód :D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal