Jump to content

Search the Community

Showing results for tags 'zadání'.

  • Search By Tags

    Oddělujte čárkami
  • Search By Author

Content Type


Fórum

  • Obecné
    • Všeobecné
    • Všechno možné
  • Programování
    • Poradna
    • Návody
    • Tvorba
    • Hledám programátora
  • Herní oblast
    • Poradna
    • Jak na to?
    • Herní kontext
    • Herní zážitky
    • Komunita
  • Grafika
    • Poradna
    • Návody
    • Tvorba
  • Ostatní
    • Hardware a software
    • Hledám/nabízím
    • Archiv
    • 3D Tisk

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Web


Facebook


Jabber


Skype


Steam


Twitter


Github


Pastebin

Found 2 results

  1. Cíl scriptu Cílem je implementovat funkce dle prototypů a popisu v zadání. Jedná se o funkce pro práci s daty. Princip je podobny funkciam PVar. Pojde o premenne, ktore budu mat svoj nazov a svoje id. Bude mozne s nimi pracovat podla id aj podla nazvu. Kazda premenna bude pole velkosti MAX_VAR_INDEX, podobne ako PVar je premenna velkosti MAX_PLAYERS. S kazdym indexom sa bude pracovat zvlast. Co ovlivní hodnocení Hodnocení bude záležet na níže uvedených faktorech (od nejdůležitějšího). 1. Přeložitelnost a chybovost (chyby, pády a varování kompilátoru, chyby při běhu [klikněte pro příklad]); 2. Správná implementace (dodržení zadání) a funkčnost; 3. Ošetření neočekávaných vstupů a hodnot; 4. Optimalizácia kódu 5. Přehlednost kódu. Povolené "warning 203: symbol is never used" a "error 013: no entry point (no public functions)" Tieto chyby su povolene, pretoze ide skorej o include nez o script. Váš kód by nemal obsahovať nič, čo nieje súčasť vášho riešenia. Funkcie a globálne premenné, ktoré niesú súčasťou zadania by mali byť statické. Optimalizujte na vyuzitie CPU, az potom na RAM a na realne pouzivanie (funkcie Var_Create a Var_Destroy mozu byt pomalsie, kedze sa budu pouzivat malo, ale ostatne by mali byt co najrychlejsie). Co je zakázáno Níže uvedené funkce a způsoby programování jsou zakázány a za jejich použití bude značná ztráta bodů. 1. Jakékoliv knihovny (includy), které nejsou součástí a_samp.inc; 2. Jakékoliv pluginy. 3. Definovanie funkcie main alebo OnFilterScriptInit 4. Pouzivat funkcie PVar, SVar, setproperty a getproperty Datum a způsob odevzdání Hotové scripty zasílejte vEnd-ovi pomocí soukromé zprávy. Název scriptu bude ve tvaru vas_nick_na_foru.inc. Scripty mi můžete zasílat do 28. 2. 2017. Zadání 1. Vlozte do suboru: #define INVALID_VAR_ID -1 2. Vytvorte define ak neexistuju: #define MAX_VAR_INDEX 100 // Index moze byt od 0 do MAX_VAR_INDEX-1 #define MAX_VAR_NUM 1000 // Maximalny pocet premennych Var Ak uz je MAX_VAR_INDEX alebo MAX_VAR_NUM definovany, pouzije sa ten. 3. Vytvorte tag: Error: Tento tag obsahuje vystup funkcii. Premenna s tymto tagom sa musi rovnat true ak sa nevyskytla chyba a false ak sa chyba vyskytla. Taktiez podmienka if(error) musi byt splnena vtedy a len vtedy, ak funkcia neprebehla uspesne (vyskytla sa chyba alebo ak hodnota nieje definovana. Napriklad: Error:-376437). Funkcie musia vracat rozne hodnoty pre rozne druhy chyb. Odporucame pouzit enum na jednotlive hodnoty napriklad: enum Error { Var_Err_Invalid = 0, Var_Err_OK = 1, // uspesne hodnoty su kladne Var_Err_AllReturned = 2, Var_Err_SomeReturned = 3, Var_Err_NotFound = -1, // chyby su zaporne Var_Err_BadIndex = -2, // ... } 4. Implementujte následující funkce a) Var_Create forward Var:Var_Create(const name[]); Účel a implemenační detaily: Vytvorit premennu s nazvom name. Premenna musi na vsetkych indexoch obsahovat hodnotu 0. Ci toto docielite v Create alebo Destroy je na vas. Návratová hodnota: id vytvorenej premennej – uspesne vytvorenie; id premennej s danym nazvom – premenna so zadanym nazvom uz existuje; INVALID_VAR_ID – nastala chyba; Var_Destroy forward Error:Var_Destroy(Var:id); Účel: Odstrani premennu id. Návratová hodnota: Chyba alebo uspech. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_Destroy(var); . c) Var_DestroyNamed forward Error:Var_DestroyNamed(const name[]); Účel a implementační detaily: Odstrani premennu s nazvom name. Návratová hodnota: Chyba alebo uspech. Příklad použití: Var_Create("Zabitia"); Var_DestroyNamed("Zabitia"); . d) Var_Set forward Error:Var_Set(Var:id, index, value); Účel: Nadstavit hodnotu premennej id na indexe index na hodnotu value. Návratová hodnota: Chyba alebo uspech. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_Set(var, 0, 22); Var_Destroy(var); . e) Var_SetNamed forward Error:Var_SetNamed(const name[], index, value); Účel: Nadstavit hodnotu premennej s nazvom name na indexe index na hodnotu value. Návratová hodnota: Chyba alebo uspech. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_SetNamed("Zabitia", 0, 22); Var_Destroy(var); . f) Var_Get forward Error:Var_Get(Var:id, index, &value); Účel a implementační detaily: Vlozi hodnotu premennej id na indexe index do parametru value. Návratová hodnota: Chyba alebo uspech. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_Set(var, 0, 22); new value; Var_Get(var, 0, value); printf("Zabitia: %i", value); // vypise sa 22 Var_Destroy(var); . g) Var_GetNamed forward Error:Var_GetNamed(const name[], index, &value); Účel: Vlozi hodnotu premennej s nazvom name na indexe index do parametru value. Návratová hodnota: Chyba alebo uspech. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_Set(var, 0, 22); new value; Var_GetNamed("Zabitia", 0, value); printf("Zabitia: %i", value); // vypise sa 22 Var_Destroy(var); . h) Var_GetID forward Var:Var_GetID(const name[]); Účel: Ziska id premennej s nazovm name. Návratová hodnota: ID premennej. INVALID_VAR_ID v případě, že premenna s nazvom name neexistuje! Příklad použití: Var_Create("Zabitia"); new Var:var = Var_GetID("Zabitia"); Var_Destroy(var); . i) Var_GetOrdered forward Error:Var_Ordered(Var:id, array[], size = sizeof(array)); Účel a implementační detaily: Ziska prvych size indexov zoradenych zostupne (od najvacsieho po najmensi). Návratová hodnota: Chyba alebo typ uspechu. Musi vratit rozne hodnoty ak sa do pola zmestili vsetky indexy a ak nie. Příklad použití: new Var:var = Var_Create("Zabitia"); Var_Set(var, 0, 22); Var_Set(var, 1, 33); Var_Set(var, 2, 27); new arr[3]; Var_Ordered(var, arr, 3); // Ziska top 3 zabijakov // arr[0] = 1 // arr[1] = 2 // arr[2] = 0 . j) Var_GetError forward bool:Var_GetError(Error:error, str[], maxsize = sizeof(str)); Účel a implementační detaily: Ziska cloveku citatelny popis chyby error a vlozi ho do str. Ak je popis chyby dlhsi ako maxsize, tak ho oreze. Vrati "Uspech" alebo niec podobne ak nejde o chybu ale uspech. Návratová hodnota: true pre uspech, false ak ide o neplatnu chybu. Příklad použití: new Var:var = Var_Create("Zabitia"); new Error:err = Var_SetNamed("Zabitia", 0, 22); new str[128]; Var_GetError(err, str); print(str); // vypise chybu
  2. Cíl scriptu Cílem je implementovat funkce dle prototypů a popisu v zadání. Jedná se o funkce pro práci s řetězcem a o funkce pro nenáročné výpočty a úkony. Co ovlivní hodnocení Hodnocení bude záležet na níže uvedených faktorech (od nejdůležitějšího). 1. Přeložitelnost a chybovost (chyby, pády a varování kompilátoru, chyby při běhu [klikněte pro příklad]); 2. Správná implementace (dodržení zadání) a funkčnost; 3. Ošetření neočekávaných vstupů a hodnot; 4. Přehlednost kódu. Co hodnocení neovlivní V prvním kole nebude rozhodovat optimalizace kódu. Co je zakázáno Níže uvedené funkce a způsoby programování jsou zakázány a za jejich použití bude značná ztráta bodů. 1. Všechny funkce z knihovny string.inc (strlen, strcmp, strval apod.); 2. Klíčové slovo stock u definic funkcí; 3. Jakékoliv jiné knihovny (includy), které nejsou součástí a_samp.inc; 4. Jakékoliv pluginy. Datum a způsob odevzdání Hotové scripty zasílejte mně pomocí soukromé zprávy. Název scriptu bude ve tvaru vas_nick_na_foru.pwn. Scripty mi můžete zasílat do 22. 1. 2017. Zadání 1. Implementujte následující funkce pro práci s řetězci a) StringCompare forward StringCompare(const str1[], const str2[], bool:ignorecase=false, length=-1); Účel a implemenační detaily: Porovnat řetězce str1 a str2. Parametr ignorecase s hodnotou true nebude rozlišovat velká a malá písmena. Parametrem length lze určit, kolik znaků od začátku se bude porovnávat. Má-li zápornou hodnotu (výchozí je -1), budou se porovnávat celé řetězce. Návratová hodnota: 0 – řetězce jsou totožné; 1 – řetězec str1 je delší; -1 – řetězec str2 je delší; 69 – řetězce jsou stejně dlouhé, ale nejsou totožné. Příklad použití: new res; res = StringCompare("Ahoj", "Ahoj"); //res bude mít hodnotu 0 res = StringCompare("Ahoj", "ahoj svete!", true, 4); //res bude mít hodnotu 0 res = StringCompare("Ahoj", "ahoj"); //res bude mít hodnotu 69 res = StringCompare("Ahoj svete!", "Ahoj"); //res bude mít hodnotu 1 res = StringCompare("Ahoj", "Ahoj svete!"); //res bude mít hodnotu -1 . StringToValue forward StringToValue(const str[]); Účel: Převést řetězec str na celé číslo (kladná i záporná čísla). Návratová hodnota: Převedené číslo. 0 v případě, že byl řetězec prázdný nebo obsahoval i jiné znaky než číslice a mínus na začátku – ošetřte! Příklad použití: new res; res = StringToValue("0123"); //res bude mít hodnotu 123 res = StringToValue("-1445"); //res bude mít hodnotu -1445 res = StringToValue("4a8 58"); //res bude mít hodnotu 0 . c) StringConcat forward StringConcat(dest[], const src[], length = sizeof src, maxlen = sizeof dest); Účel a implementační detaily: Spojit řetězce dest a src a nový řetězec uložit do řetězce dest. Parametrem length lze určit, kolik znaků z řetězce src se má spojit s řetězcem dest. Velikost řetězce dest je uložena v parametru maxlen. Návratová hodnota: 1 – funkce se provedla úspěšně; 0 – nastala chyba (záporný parametr length apod. – ošetřte!). Příklad použití: new res[20+1] = "Ahoj, "; StringConcat(res, "svete!"); //res bude mít hodnotu "Ahoj, svete!" res = "Ahoj, "; StringConcat(res, "svete!", 2); //res bude mít hodnotu "Ahoj, sv" . d) StringTransliterate forward StringTransliterate(dest[]); Účel: Nahradit všechna diakritická znaménka (česká i slovenská) v řetězci dest vhodnými písmeny. Návratová hodnota: Žádná. Příklad použití: new res[] = "Příliš žluťoučký kůň úpěl ďábelské ódy."; StringTransliterate(res); //res bude mít hodnotu "Prilis zlutoucky kun upel dabelske ody." . e) StringAnalyze forward StringAnalyze(const dest[], const sequence[], &numcount, &letcount, &specount, &seqcount); Účel: Zjistit, kolikrát se v řetězci dest vyskytuje posloupnost znaků sequence, a tento počet uložit do parametru seqcount (rozlišují se velká a malá písmena). Zjistit, kolik obsahuje řetězec dest číslic, a tento počet uložit do parametru numcount. Zjistit, kolik obsahuje řetězec dest písmen, a tento počet uložit do parametru letcount (nerozlišují se velká a malá písmena). Zjistit, kolik obsahuje řetězec dest nealfanumerických znaků (znaky, které nejsou písmena ani číslice včetně mezer), a tento počet uložit do parametru specount. Návratová hodnota: Žádná. Příklad použití: new res[] = "ahahaha, 85,! mehehe, muhaha, AHAHAHA"; new num, let, spec, seq; StringAnalyze(res, "ha", num, let, spec, seq); //num bude mít hodnotu 2, let hodnotu 26, spec hodnotu 9 a seq hodnotu 5 . f) DecodeMorse (BONUS – nepovinné) forward DecodeMorse(const morsecode[]); Účel a implementační detaily: Do parametru morsecode se udává řetězec v morseovce, který je potřeba rozkódovat a vypsat do terminálu (funkce printf). Jednotlivá písmena se oddělují mezerou, slova lomítkem. Počítejte s tím, že zadaná morseovka bude vždy korektní, to znamená, že není třeba nic ošetřovat. Návratová hodnota: Délka dekódovaného řetězce. Příklad použití: DecodeMorse(".... . .-.. .-.. ---/.-- --- .-. .-.. -.."); //do terminálu se vypíše "Hello world" a návratová hodnota bude 11 . 2. Implementujte následující funkce pro nenáročné výpočty a úkony a) HexToDec forward HexToDec(strhex[]); Účel: Převést číslo šestnáctkové soustavy ve formě řetězce strhex na číslo desítkové soustavy. Návratová hodnota: Převedené číslo. -1 v případě, že je řetězec strhex prázdný nebo obsahuje jiné znaky než 0-9, A-F či a-f – ošetřte! Příklad použití: new str[] = "FF", hex; hex = HexToDec(str); //hex bude mít hodnotu 255 . BinToDec forward BinToDec(strbin[]); Účel: Převést číslo dvojkové soustavy ve formě řetězce strbin na číslo desítkové soustavy. Návratová hodnota: Převedené číslo. -1 v případě, že je řetězec strbin prázdný nebo obsahuje jiné znaky než 0 a 1 – ošetřte! Příklad použití: new str[] = "11111111", bin; bin = BinToDec(str); //bin bude mít hodnotu 255 . c) RandomEx forward RandomEx(min, max, excepts[], size = sizeof excepts); Účel a implementační detaily: Vygenerovat náhodné kladné číslo v rozsahu od min do max. Vygenerované číslo se nesmí shodovat s žádným číslem z pole excepts (velikost pole je uložena v parametru size). Návratová hodnota: Vygenerované náhodné kladné číslo. -1 v případě neúspěchu (min je větší než max, číslo není kladné apod. – ošetřte!). Příklad použití: new arr[] = {1, 2, 3}, randNum; randNum = RandomEx(1, 4, arr); //randNum bude mít hodnotu 4, protože čísla 1, 2, 3 jsou v poli arr randNum = RandomEx(1, 10, arr); //randNum bude mít hodnotu z rozsahu od 4 do 10 (1, 2, 3 opět nevyhovují) . d) FileRead forward FileRead(fpath[], arr[6]); Účel a implementační detaily: Přečíst 3 údaje ze souboru s cestou fpath, převést je na číslo pomocí funkce StringToValue a uložit je do pole arr na indexy 0, 1 a 2. Uložit 3 náhodně vygenerovaná čísla (funkce RandomEx) s rozsahem od 1 do 10 na indexy 3, 4 a 5. Tato čísla se nesmí shodovat s čísly na indexech 0, 1 a 2! Návratová hodnota: 1 – funkce se provedla úspěšně; 0 – nastala chyba (soubor se neotevřel správně, cesta k souboru neexistuje apod. – ošetřte!). Příklad použití: new arr[6]; FileRead("neco.txt", arr); . e) GetMinMax forward GetMinMax(arr[], &min, &max, size = sizeof arr); Účel: Zjistit minimální a maximální hodnotu z pole arr a indexy pole s minimální a maximální hodnotou uložit do parametrů min a max. Velikost pole arr je uložena v parametru size. Návratová hodnota: Žádná. Příklad použití: new arr[6] = {4, 5, 2, 6, 8, 7}, minVal, maxVal; GetMinMax(arr, minVal, maxVal); //minVal bude mít hodnotu 2 a maxVal hodnotu 4 . Soubor k funkci FileRead je k dispozici v přílohách (jak pro Windows, tak pro Linux – rozdílné odřádkování). file_windows.txt file_linux.txt
×
×
  • Create New...