Страница 1 из 4 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 40

Тема: LightCode Cup | Конкурс pawn-скриптеров | Результаты этапа новичков

  1. #1
    Ich liebe Deutschland Аватар для Фора
    Регистрация
    19.07.2010
    Сообщений
    3,615
    Репутация: 284

    Звание: как роза среди колючек

    LightCode Cup | Конкурс pawn-скриптеров | Результаты этапа новичков

    Итак, наконец-то стали известны результаты LightCode Cup 2015 | Этап для новичков.
    В конкурсе приняли участие пользователи с разных Pawn-порталов, а количество участников - превысило 30 человек.


    Список победителей:
    1 место. McLuhan (75 баллов) | приз: 3 500 р. | приз отправлен
    2 место. iBorland (73 балла) | приз: 1 200 р. | приз отправлен
    3 место. UnO33 (72 балла) | приз: 850 р. | приз отправлен
    4 место. Prolific (70 баллов) | приз: 500 р. | приз отправлен
    5 место. serij-68tmb (68 баллов) | приз: 250 р. | приз отправлен
    Остальные результаты: lightcode.ru/res.html

    Что делать, если Вы увидели себя в списке победителей:

    Связаться с организатором vk.com/games_18 для получения приза.
    С нами связаться можно и по почте: [email protected], но, быстрее будет через ВК.

    Члены жюри:

    Часть A: TERNER
    Часть B: Games
    Часть С: Snoowker


    Часть А:

    • A1: 1
    • A2: 4
    • A3: 2
    • A4: 4
    • A5: 3
    • A6: 1
    • A7: 3
    • A8: 2
    • A9: 4
    • A10: 2


    Директива процессора #pragma semicolon 0, отключает ошибку 001, не обращает внимание на отсутствие ';'
    PHP код:
    #include a_samp
    // [==== Ваше решение ====]
    #pragma semicolon 0
    // [==== Конец решения ====]
    public OnFilterScriptInit()
    {
            new 
    501030
            a 
    a
            b 
    -= a
            c 
    b
           
            printf
    ("%d"c)


    PHP код:
    #include a_samp
    public OnFilterScriptInit()
    {
            new 
    i10;
            for (
    0; -Ni--) printf("+");


    Функция Func(value) применяет операцию побитового И (AND) к целочисленным числам value и 1.
    Так как у числа 1 только первый бит принимает значение "1", то все остальные биты у результирующего числа
    становятся равными 0, а сам результат операции принимает значение "1" (если value нечетно: value = 0b...1)
    или "0" (если value четно: value = 0b...0). В консоли будет сообщение "1" или "0" соответственно.
    Таким образом, эту функцию можно использовать на определение четности/нечетности числа.

    Вся суть в ключевом слове "static" при объявлении массива Places. Этот модификатор дает доступ
    к массиву только из того метода, где этот массив инициализируется.
    Таким образом, доступ к массиву в фильтрскрипте имеется только в основном теле кода,
    а в паблике OnFilterScriptInit() доступа к нему нет.
    Для исправления ситуации достаточно сменить модификатор "static" на "new", и всё прекрасно заработает.
    Исправленный код \filterscripts\Data\interiors.inc:
    PHP код:
    enum plInfo
    {
            
    Name[50],
            
    Interior,
            
    FloatX,
            
    FloatY,
            
    FloatZ
    }
    new 
    Places[][plInfo] = {
            {
    "24/7 1"17, -25.884498, -185.8689881003.546875},
            {
    "24/7 2"106.091179,-29.2718981003.549438},
            {
    "24/7 3"18, -30.946699,-89.609596,1003.546875},    
            {
    "24/7 4"16, -25.132598,-139.066986,1003.546875},    
            {
    "24/7 5"4, -27.312299,-29.277599,1003.557250},
            {
    "24/7 6"6, -26.691598,-55.714897,1003.546875},    
            {
    "Airport ticket desk"14, -1827.1473387.2074171061.143554},    
            {
    "Airport baggage reclaim"14, -1861.93688954.9080921061.143554}
    }; 

    PHP код:
    RemoveSpaces(string[])
    {
            for(new 
    strlen(string); >= 0i--)
            {
                    switch(
    string[i])
                    {
                            case 
    ' 'strdel(stringii+1);
                    }
            }


  2. 1 пользователь сказал cпасибо Фора за это полезное сообщение:

    e.kosovskij (04.12.2015)

  3. #2
    Ich liebe Deutschland Аватар для Фора
    Регистрация
    19.07.2010
    Сообщений
    3,615
    Репутация: 284

    Звание: как роза среди колючек


    Итоги части A и B участника ukrainian
    Часть А: 2 / 10 = 4 балла
    Часть B: 6 баллов
    • B1: 6
    • B2: 0
    • B3: 0
    • B4: 0
    • B5: 0

    Итог: 10 баллов


    Итоги части A и B участника Annihilator
    Часть А: 6 / 10 = 12 баллов
    Часть B: 5 баллов
    • B1: 0
    • B2: 0
    • B3: 0
    • B4: 3 (неполный ответ)
    • B5: 2 (заголовок ф-ии изменен + strmid + strfind + неверная работа, обрезает последний символ)

    Итог: 17 баллов


    Итоги части A и B участника Praetorian
    Часть А: 8 / 10 = 16 баллов
    Часть B: 4 баллов
    • B1: 4 (ответ неполный)
    • B2: 0 (нужно было изменить один символ, а не два)
    • B3: 0
    • B4: 0
    • B5: 0 (что за Char?)

    Итог: 20 баллов


    Итоги части A и B участника William_Pilipa
    Часть А: 5 / 10 = 10 баллов
    Часть B: 0 баллов
    • B1: 0
    • B2: 0
    • B3: 0
    • B4: 0
    • B5: 0

    Итог: 10 баллов


    Итоги части A и B участника Untonyst
    Часть А: 7 / 10 = 14 баллов
    Часть B: 7 баллов
    • B1: 0
    • B2: 0 (изменить нужно было 1 символ, а не два)
    • B3: 2
    • B4: 0
    • B5: 5 (strdel)

    Итог: 21 балла


    Итоги части A и B участника Argument
    Часть А: 8 / 10 = 16 баллов
    Часть B: 25 баллов
    • B1: 6
    • B2: 6
    • B3: 4
    • B4: 6
    • B5: 3 (strdel + зачем return + постоянный вызов strlen?)

    Итог: 41 балла


    Итоги части A и B участника spaaaaaaaace
    Часть А: 7 / 10 = 14 баллов
    Часть B: 8 баллов
    • B1: 0
    • B2: 6
    • B3: 0
    • B4: 0
    • B5: 2
      Функция не проходит тест: "t t"
      Не проходит, т.к. stlen(str) вызывается при каждой итерации цикла.
      А после удаления символа - длина уменьшается.
      Решение: либо перенести значение strlen(str) в область инициализации цикла: for (new i, l = strlen(str); i < l; i++)
      либо после вызова strdel уменьшить значение переменной i на один:

      PHP код:
      if(len != -1)
                  {
                      new final = 
      len 1;
                      
      strdel(strlen, final);
                      
      i--;
                  } 

    Итог: 14 балла


    Итоги части A и B участника #Denwer
    Часть А: 6 / 10 = 12 баллов
    Часть B: 4 баллов
    • B1: 4
    • B2: 0
    • B3: 0
    • B4: 0
    • B5: 0

    Итог: 16 балла


    Итоги части A и B участника MrFe1iks
    Часть А: 7 / 10 = 14 баллов
    Часть B: 9 баллов
    • B1: 6
    • B2: 0 (нужно было изменить один символ, а не два)
    • B3: 3 (очень неполный ответ, но, хотя бы видел, где этот оператор применяется)
    • B4: 0
    • B5: 0

    Итог: 23 балла


    Итоги части A и B участника UnO33
    Часть А: 10 / 10 = 20 баллов
    Часть B: 26 баллов
    • B1: 6
    • B2: 6
    • B3: 6
    • B4: 6
    • B5: 2 (вложенный цикл, из-за чего ужасно медленная ф-ия + неверное удаление
      при использовании нескольких пробелов подряд, например, 'A B')

    Итог: 46 балла


    Итоги части A и B участника Zaur_Lumanov
    Часть А: 10 / 10 = 20 баллов
    Часть B: 23 баллов
    • B1: 5 (что такое #pragma?)
    • B2: 6
    • B3: 3 (неполный "ответ", для чего функция то?)
    • B4: 4 (неполный ответ, а почему я должен отказаться от static то?)
    • B5: 5 (использование доп. буфера (?!) , но, вариант без strdel и strfind, так что, по скорости быстрее, чем с strdel, поэтому 5)

    Итог: 43 балла


    Итоги части A и B участника Dr.Deft
    Часть А: 8 / 10 = 16 баллов
    Часть B: 9 баллов
    • B1: 0
    • B2: 0 (вообще ничего не выводит)
    • B3: 3 (а что за оператор то?)
    • B4: 3 (Хорошо, а где ответ текстом?)
    • B5: 3 (strfind + strdel = ф-ия медленная, и да, зачем return? )

    Итог: 25 балла


    Итоги части A и B участника continue
    Часть А: 7 / 10 = 14 баллов
    Часть B: 15 баллов
    • B1: 6 ("Использовать препроцессор")
    • B2: 0 (нужно было изменить один символ, а не переписать весь код)
    • B3: 3 (хотя бы знаешь, что за оператор)
    • B4: 6
    • B5: 0 (самая быстрая неверно работающая функция)

    Итог: 29 балла


    Итоги части A и B участника Valera_Trefilov
    Часть А: 7 / 10 = 14 баллов
    Часть B: 5 баллов
    • B1: 4 (читаем внимательно вопрос "ответ сначала дайте текстом")
    • B2: 0 (бесконечный вывод)
    • B3: 0
    • B4: 0
    • B5: 1

    Итог: 19 балла


    Итоги части A и B участника Profyan
    Часть А: 7 / 10 = 14 баллов
    Часть B: 5 баллов
    • B1: 4 (читаем внимательно вопрос "ответ сначала дайте текстом")
    • B2: 0 (бесконечный вывод)
    • B3: 0
    • B4: 0
    • B5: 1

    Итог: 19 балла


    Итоги части A и B участника http.kz
    Часть А: 8 / 10 = 16 баллов
    Часть B: 13 баллов
    • B1: 6
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 0
    • B4: 5
    • B5: 2 (постоянный вызов strlen + неверная работа при использовании нескольких пробелов)

    Итог: 29 балла


    Итоги части A и B участника Prolific
    Часть А: 9 / 10 = 18 баллов
    Часть B: 23 баллов
    • B1: 0 (лучше не стоит)
    • B2: 6
    • B3: 6
    • B4: 6
    • B5: 5 (strdel)

    Итог: 41 балла


    Итоги части A и B участника HappyEvgen
    Часть А: 9 / 10 = 18 баллов
    Часть B: 21 баллов
    • B1: 4 (читаем внимательно вопрос "ответ сначала дайте текстом")
    • B2: 6
    • B3: 3 (неполный ответ, для чего функция то?)
    • B4: 3 (а где ответ текстом?)
    • B5: 5 (format)

    Итог: 39 балла


    Итоги части A и B участника maxick12
    Часть А: 7 / 10 = 14 баллов
    Часть B: 5 баллов
    • B1: 0
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 0
    • B4: 3 (неполный ответ, а почему я должен отказаться от static то? и где исправленный код?)
    • B5: 2 (strfind + strdel = медленная функция, к тому же, неверный результат при большом кол-ве пробелов)

    Итог: 19 балла


    Итоги части A и B участника Dychuk
    Часть А: 9 / 10 = 18 баллов
    Часть B: 6 баллов
    • B1: 0
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 3 (неполный ответ, для чего функция то?)
    • B4: 2 (неполный ответ + твое исправление "цикла" только добавило ошибку)
    • B5: 1 (доп. буфер + постоянный вызов strlen + неверная работа + зачем return?)

    Итог: 24 балла


    Итоги части A и B участника McLuhan
    Часть А: 9 / 10 = 18 баллов
    Часть B: 23 баллов
    • B1: 5 (что такое #pragma?)
    • B2: 6
    • B3: 3 (а что за оператор то?)
    • B4: 4 (неполный ответ, а почему я должен отказаться от static то?)
    • B5: 5 (strdel)

    Итог: 41 балла


    Итоги части A и B участника Lucky533
    Часть А: 7 / 10 = 14 баллов
    Часть B: 0 баллов
    • B1: 0
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 0
    • B4: 0
    • B5: 0

    Итог: 14 балла


    Итоги части A и B участника regnaR
    Часть А: 8 / 10 = 16 баллов
    Часть B: 18 баллов
    • B1: 6
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 3 (а что за оператор то?)
    • B4: 6
    • B5: 3 (вложенный цикл, из-за чего ужасно медленная ф-ия + постоянный вызов strlen)

    Итог: 34 балла


    Итоги части A и B участника serij-68tmb
    Часть А: 10 / 10 = 20 баллов
    Часть B: 26 баллов
    • B1: 5 (что такое #pragma?)
    • B2: 6
    • B3: 6
    • B4: 6
    • B5: 3 (2 доп. буфера + strmid + strcat = функция ужасно медленная)

    Итог: 46 балла


    Итоги части A и B участника Yshmeel
    Часть А: 7 / 10 = 14 баллов
    Часть B: 5 баллов
    • B1: 0
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 0
    • B4: 3 (а где ответ текстом?)
    • B5: 2 (неверная работа ф-ии не удаляет последние пробелы
      при тесте "A B C D E F F" = "A B C D E F F")

    Итог: 19 балла


    Итоги части A и B участника DeadLine
    Часть А: 6 / 10 = 12 баллов
    Часть B: 2 балла
    • B1: 0
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 0
    • B4: 0
    • B5: 2 (постоянный вызов strlen + strdel + неверная работа при использовании нескольких пробелов)

    Итог: 14 балла


    Итоги части A и B участника Artur4eggg
    Часть А: 10 / 10 = 20 баллов
    Часть B: 8 балла
    • B1: 0
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 3 (а что за оператор то?)
    • B4: 2 (много ошибок в ответе)
    • B5: 3 (вложенный цикл, из-за чего УЖАСНО! медленная ф-ия + постоянный вызов strlen)

    Итог: 28 балла


    Итоги части A и B участника spartak09az
    Часть А: 7 / 10 = 14 баллов
    Часть B: 13 баллов
    • B1: 5 (что такое #pragma?)
    • B2: 6
    • B3: 0
    • B4: 0
    • B5: 2 (постоянный вызов strlen + strdel + не удаляет пробелы перед последним символом)

    Итог: 27 балла


    Итоги части A и B участника iBorland
    Часть А: 7 / 10 = 14 баллов
    Часть B: 16 баллов
    • B1: 6
    • B2: 0 (бесконечный цикл)
    • B3: 6
    • B4: 0
    • B5: 4 (strfind + strdel = ф-ия медленная)

    Итог: 30 балла


    Итоги части A и B участника Vitya_Saveliev
    Часть А: 6 / 10 = 12 баллов
    Часть B: 9 баллов
    • B1: 0
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 0
    • B4: 6
    • B5: 3 (strfind + strdel = ф-ия медленная, и зачем return?)

    Итог: 21 балла


    Итоги части A и B участника joker007
    Часть А: 8 / 10 = 16 баллов
    Часть B: 9 баллов
    • B1: 0
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 1
    • B4: 6
    • B5: 2 (постоянный вызов strlen + strdel + неверный ответ при использовании нескольких пробелов подряд)

    Итог: 25 балла


    Итоги части A и B участника Timur_Diez
    Часть А: 7 / 10 = 14 баллов
    Часть B: 3 баллов
    • B1: 0
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 3 (хотя бы знаешь, что за оператор)
    • B4: 0
    • B5: 0

    Итог: 17 баллов


    Итоги части A и B участника EasyChill
    Часть А: 9 / 10 = 18 баллов
    Часть B: 23 баллов
    • B1: 6
    • B2: 6
    • B3: 3 (а что за оператор то?)
    • B4: 6
    • B5: 2 (постоянный вызов strlen + strfind + strdel + не удаляет пробелы перед последним символом)

    Итог: 41 балла


    Итоги части A и B участника lexjusto
    Часть А: 9 / 10 = 18 баллов
    Часть B: 10 баллов
    • B1: 4 (что такое #pragma? и где весь код?)
    • B2: 0 (изменить нужно было один символ, а не два)
    • B3: 3 (а что за оператор то?)
    • B4: 3 (неполный ответ, а почему я должен отказаться от static то? и где весь код?)
    • B5: 0 (самая быстрая неверно работающая ф-ия)

    Итог: 28 балла


    Итоги части A и B участника union.unli
    Часть А: 6 / 10 = 12 баллов
    Часть B: 13 баллов
    • B1: 4 (читаем внимательно вопрос "ответ сначала дайте текстом")
    • B2: 6
    • B3: 3 (а что за оператор то?)
    • B4: 0
    • B5: 0

    Итог: 25 балла


    PHP код:
    1. iBorland 43
    2. Annihilator 
    38
    2. http
    .kz 38
    3. McLuhan 
    34
    4. Vitya_Saveliev 
    33
    5. 
    #Denwer | 31
    6. Prolific 29
    7. Dr
    .Deft 27
    8. UnO33 
    26
    8. Dychuk 
    26
    9. Profyan 
    25
    10. serij
    -68tmb 22
    10. Zaur_Lumanov 
    22
    11. Timur_Diez 
    19
    12. DeadLine 
    8
    13. EasyChill 
    7
    14. Valera_Trefilov 
    4
    15. spartak09az 
    0
    15. Yshmeel 
    дубликат?
    15. spaaaaaaaace дубликат?
    15. ukrainian дубликат или источник

    Работы части С опубликованы для всеобщего обсуждения: http://files.lightcode.ru/lightcode_cup_2015/newbie/

  4. #3
    Ich liebe Deutschland Аватар для Фора
    Регистрация
    19.07.2010
    Сообщений
    3,615
    Репутация: 284

    Звание: как роза среди колючек
    Работы участников части A и B: (Part I)

    PHP код:
    answerBlock_Annihilator()
    {
        
    /*
        A1:1 +
        A2:4 +
        A3:3 -
        A4:1 -
        A5:3 +
        A6:1 +
        A7:2 -
        A8:2 +
        A9:4 +
        A10:1 -
        
        B1:
        B2:for (i = 0; i < N; i--) printf("+");
        
        B3:Для определения нажатых клавиш игроком
        
        B4:Оператор static ограничивает зону использования, поэтому массив Places можно использовать только там, где он был объявлен, в данном случае только в инклуде.
        new Places[][plInfo] = {
            
        B5:
        stock RemoveSpaces(string[], output[])
        {
        strmid(output, string, 0, strlen(string), 24);
        while(strfind(output, " ") >= 0) strdel(output, strfind(output, " "), strfind(output, " ")+1);
        return 1;
        }
        
        */


    PHP код:
    answerBlock_Praetorian()
    {
        
    /*
        Часть A:
        A1:1 +
        A2:4 +
        A3:4 -
        A4:4 +
        A5:3 +
        A6:2 -
        A7:3 +
        A8:2 +
        A9:4 +
        A10:2 +
        Часть B:
        1.
        Надо просто написать #pragma semicolon

        #include a_samp 

        // [==== Ваше решение ====] 
        #pragma semicolon
        // [==== Конец решения ====] 

        public OnFilterScriptInit() 
        { 
            new a = 50, b = 10, c = 30 
            a = b + c + a 
            b -= a 
            c = a + b 
             
            printf("%d", c) 
        }  
        2.
        #include a_samp 

        public OnFilterScriptInit() 
        { 
            new i, N = 10;  
            for (i = 0; i < N; i++) printf("+"); 
        }  
        3.
        Функция возвращает значение 1.
        4.-
        5.
        stock RemoveSpaces(str[])
        {
            new string[128], pos[2] = {-1, -1};
            for(new i, l = strlen(str); i != l; i++)
            {
                if(str[i] != Char && pos[0] == -1) pos[0] = i;
                if(str[l - 1 - i] != Char && pos[1] == -1) pos[1] = l - i;
                if(pos[0] != -1 && pos[1] != -1) break;
            }
            strmid(string, str, pos[0], pos[1]);
            return string;
        }  
        */


    PHP код:
    answerBlock_William_Pilipa()
    {
        
    /*
        
        Pawno-Info.Ru: http://pawno-info.ru/member.php?u=23756


        A1: 1 +
        A2: 4 +
        A3: 2 +
        A4:   -
        A5: 4 -
        A6: 1 +
        A7: 4 -
        A8:   -
        A9:   -
        A10: 2 +


        B1: Каким образом можно заставить компилятор не обращать внимание на ; в конце каждой строки?
        Ответ дайте сначала текстом, а затем покажите применение непосредственно в коде.

        Не как.


        Заставьте успешно скомпилироваться следующий код:

        PHP код:
        #include a_samp

        // [==== Ваше решение ====]

        #include <a_samp>


        public OnFilterScriptInit()
        {
            new a = 50, b = 10, c = 30;
            a = b + c + a;
            b -= a;
            c = a + b;

            printf("%d", c);
        }

        // [==== Конец решения ====]

        public OnFilterScriptInit()
        {
            new a = 50, b = 10, c = 30
            a = b + c + a
            b -= a
            c = a + b
            
            printf("%d", c)
        }  
        B2: Добавьте или измените 1 символ так, чтобы в консоль вывелось 10 плюсов.
        В качестве ответа приведите измененный код целиком.


        PHP код:
        #include a_samp

        public OnFilterScriptInit()
        {
            new i, N = 10; 
            for (i = 0; i < N; i--) printf("+");
        }  

        Ответ:
            new i, N = 10;
            for (i = 0; i < N; i++) printf("+");

        B3: Какую роль выполняет ф-ия Func(value) в приведенном ниже коде?
        Для чего она может применяться?
        Ответ дайте текстом.

        PHP код:
        #include a_samp

        public OnFilterScriptInit()
        {
            new testVal = 5; //переменная для тестирования
            printf("%d", Func(testVal));
        }

        stock Func(value) return value & 1;  

        Ответ: Она приравнивает переменную к чисту 1.

        B4:

        Имеется FS intlist.pwn в папке \filterscripts
        Внутри папки filterscripts создана папка Data, в которой помещен инклюд interiors.inc, который содержит название, ид интерьера и координаты определенного списка интерьеров.

        Полная архитектура проекта:

        Server
        +---filterscripts
        ¦ +- intlist.pwn
        ¦ L---Data
        ¦--------+- interiors.inc

        Исходный код \filterscripts\intlist.pwn:


        PHP код:
        #include a_samp
        #include "Data\interiors.inc"

        public OnFilterScriptInit()
        {
            for (new i, l = sizeof (Places); i < l; i++)
            {
                printf("%d. Name: '%s' | Interior: %d | Pos: %0.2f, %0.2f, %0.2f", i + 1, Places[i][Name], Places[i][Interior],
                    Places[i][X], Places[i][Y], Places[i][Z]);
            }
        }  
        Исходный код \filterscripts\Data\interiors.inc:

        PHP код:
        enum plInfo
        {
            Name[50],
            Interior, 
            Float: X,
            Float: Y,
            Float: Z
        }

        static Places[][plInfo] = {
            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},    
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},    
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},    
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},    
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };  
        Но, проблема в том, что данный код не компилируется.
        Напишите текстом, в чем заключается проблема.

        Затем, исправьте в коде ошибку, которую допустил скриптер. 
        Запрещено перемещать данные из инклюда в фс или обратно.

        В качество ответа приведите письменный ответ а также прикрепите исправленный код.


        Ответ: Признаюсь, не смог. Не вдуплил вопрос, только проснулся(
        Надеюсь это не кретичьно.


        B5: Дана строка. Напишите ф-ию RemoveSpaces(string[]), которая удалит все пробелы внутри строки.

        PHP код:
        #include a_samp

        public OnFilterScriptInit()
        {
            new str[] = "любая строка для теста";
            RemoveSpaces(str);
            printf("Результат: '%s'", str);
        }

        stock RemoveSpaces(string[])
        {
            new str[] = "любаястрокадлятеста"; // by William_Pilipa :DDD
        }  
        */


    PHP код:
    answerBlock_Untonyst()
    {
        
    /* ответы части "A":

        А1:    1 +
        А2:    4 + 
        А3:    2 +
        А4:    4 +
        А5:    3 +
        А6:    2 -
        А7:    2 -
        А8:    2 +
        А9:    1 -
        А10:    2 +


        //

        * ответы части "B":

        В1:
        не знаю

        В2:
        new i, N = 10;
        for (i = 0; i < N; i++) printf("+");

        В3: суть функции в том, чтобы возвратить
        число, над которым выполнилось побитовое И.

        В4: проблема в том, что не правильно подключен
        инклуд. Решение - указать правильный путь у инклуду.

        #include <../../filterscripts/Data/interiors>

        B5:
        main()
        {
            new str[] = "любая строка для теста";
            RemoveSpaces(str);
            printf("Результат: '%s'", str);
        }

        stock RemoveSpaces(string[])
        {
            for(new i; string[i] != '\0'; i++)
                if(string[i] == ' ')
                    strdel(string, i, i + 1), --i;
        }*/


    PHP код:
    answerBlock_Argument()
    {
        
    /*
        
        часть A:
        A1) 1 +
        A2) 4 +
        A3) 2 +
        A4) 4 +
        A5) 1 -
        A6) 1 +
        A7) 2 -
        A8) 2 +
        A9) 4 +
        A10) 2 +

        часть B:

        B1) (Директива препроцессора) Для того, чтобы скомпилить код без использований точек с запятой ";", в шапку скрипта необходимо воткнуть "#pragma semicolon false"

        Ссылка: http://pastebin.com/x001Xmp3

        B2) Ссылка: http://pastebin.com/jsV8NqpT

        B3) Здесь используется побитовый оператор "И" & (что-то в стиле логического умножения).

        Пример: 0101 & 0011 = 0001. Если оба бита(самая правая единица) равны 1, то результирующее значение будет = 1, если есть хотя бы один 0(все остальные биты), то, соответсвенно, в итоге будет 0.

        Используется это даже в коллбэке OnPlayerKeyStateChange при проверке нажатой или отпущенной клавиши (newkeys, oldkeys).

        Если честно, во всей этой теме я не особо шарю. Но тема OFFREAL'a вывозит: http://pawno.su/showthread.php?t=30403

        Там и есть пример с OnPlayerKeyStateChange.

        B4) Проблема здесь заключалась в том, что вместо new, Places была объявлена через static. static - переменные, которые видны только в пределах текущего файла. Вызвать из скрипта ее не получится, она действует в пределах interiors.inc

        Ссылка: http://pastebin.com/9q9Sx0yJ

        B5)
        
        stock RemoveSpaces(string[])
        {
            for(new i = 0; i != strlen(string); i++)
            {
                if(string[i] == ' ') strdel(string, i, i+1);
            }
            return string;
        }
        
        
        */


    PHP код:
    answerBlock_spaaaaaaaace()
    {
        
    /*
        Ответы:
        A1: 2 -
        A2: 4 +
        A3: 2 +
        A4: 4 +
        A5: 3 +
        A6: 1 +
        A7: 4 -
        A8: 2 +
        A9: 1 -
        A10: 2 +
        ---
        B1: не смог
        B2:
         
        new i, N = 10;
        for (i = 0; i < N; N--) printf("+");
         
        B3: Функция вернет не число 5, а число 1.
        B4: не смог
        B5: 
        public OnGameModeInit()
        { new str[] = "любая строка для теста"; printf("Результат: '%s'", RemoveSpaces(str));

        return 1;
        }
        stock RemoveSpaces(str[])
        {
        new len;
        for(new i = 0; i < strlen(str); i++)
        {
        len = strfind(str, " ", true);
        if(len != -1)
        {
        new final = len + 1;
        strdel(str, len, final);
        }
        }
        return str;
        }
        */


    PHP код:
    answerBlock_#Denwer()
    {
        
    /*
        Часть A:

        A1 - 1. +
        A2 - 4. +
        A3 - 2. +
        A4 - 4. +
        A5 - 2. -
        A6 - 2. -
        A7 - 3. +
        A8 - 3. -
        A9 - 4. +
        A10 - 4. -

        Часть B:

        B1:

        Использовать макрос.

        #pragma semicolon

        new a = 50, b = 10, c = 30

        a = b + c + a

        b -= a

        c = a + b

        printf("%d", c)

        B2:

        new i, N = 10;

        for (i = 0; i < N; i++) printf("+");

        B3:

        Функция возвращает сумму (то есть 5) и значение 1 (true)

        B4:

        Неправильная загрузка инклуда, не будет найдено.

        #include "../filterscripts/names.pwn/Data/interios.inc"

        B5: -
    */


    PHP код:
    answerBlock_MrFe1iks()
    {
        
    /*
        Часть A:

        A1: 1 +
        A2: 4 +
        A3: 2 +
        A4: 4 +
        A5: 2 -
        A6: 1 +
        A7: 4 -
        A8: 3 -
        A9: 4 +
        A10: 2 +
        
        Часть B:

        B1: #pragma semicolon 0

        B2: for (i = 0; i < N; i++) printf("+");

        B3: Побитовое И. В PAWN'e для этого используется данный оператор. Пример: (0100 1011) & (1011 0110) = (0000 0010)

        */


    PHP код:
    answerBlock_UnO33()
    {
        
    /*
        Часть А:
        1) 1 +
        2) 4 +
        3) 2 + 
        4) 4 +
        5) 3 +
        6) 1 +
        7) 3 +
        8) 2 +
        9) 4 +
        10) 2 +
        
        Часть B:
        
        B1) Для этого достаточно добавить директиву #pragma semicolon 0 в начало мода, как показано ниже:

        #include a_samp

        // [==== Ваше решение ====]
        #pragma semicolon 0
        // [==== Конец решения ====]

        public OnFilterScriptInit()
        {
            new a = 50, b = 10, c = 30
            a = b + c + a
            b -= a
            c = a + b

            printf("%d", c)
        }
        ------------------------------------------------------------------------------------------------------
        B2)

        #include a_samp

        public OnFilterScriptInit()
        {
            new i, N = 10; 
            for (i = 0; i < N; N--) printf("+");
        }  
        ------------------------------------------------------------------------------------------------------
        B3)  Ф-ция применяется для определения нечётности значения в параметре value. Используется побитовое И.
        ------------------------------------------------------------------------------------------------------
        B4) Глобальные static-переменные видны только в одном файле, по этому и возникает ошибка. Если static заменить обычным оператором new, код скомпилируется.

        //Сам файл
        #include a_samp
        #include "Data\interiors.inc"

        public OnFilterScriptInit()
        {
            for (new i, l = sizeof (Places); i < l; i++)
            {
                printf("%d. Name: '%s' | Interior: %d | Pos: %0.2f, %0.2f, %0.2f", i + 1, Places[i][Name], Places[i][Interior],
                    Places[i][X], Places[i][Y], Places[i][Z]);
            }
        }  

        //инклюд
        enum plInfo
        {
            Name[50],
            Interior, 
            Float: X,
            Float: Y,
            Float: Z
        }

        new Places[][plInfo] = {
            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},    
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},    
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},    
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},    
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        }; 
        ------------------------------------------------------------------------------------------------------
        B5) #include a_samp

        public OnFilterScriptInit()
        {
            new str[] = "любая строка для теста";
            RemoveSpaces(str);
            printf("Результат: '%s'", str);
        }

        stock RemoveSpaces(string[])
        {
            for(new i = 0;string[i];i++){
                if(string[i] == ' ')
                    for(new j=i;string[j];j++) string[j] = string[j+1];
            }
        }
        
        */


    PHP код:
    answerBlock_Zaur_Lumanov()
    {
        
    /*
        Часть А:
        A1: 1 +
        A2: 4 +
        A3: 2 +
        A4: 4 +
        A5: 3 +
        A6: 1 +
        A7: 3 +
        A8: 2 +
        A9: 4 +
        A10: 2 +
        
        Часть B:
        
        B1: =========================================================================
        #include a_samp

        // [==== Ваше решение ====]
        #pragma semicolon 0
        // [==== Конец решения ====]

        public OnFilterScriptInit()
        {
            new a = 50, b = 10, c = 30
            a = b + c + a
            b -= a
            c = a + b
           
            printf("%d", c)
        }  
        ===-=========================================================================

        B2: =========================================================================
        #include a_samp

        public OnFilterScriptInit()
        {
            new i, N = 10; 
            for (i = 0; i < N; N--) printf("+");
        }  
        ===-=========================================================================

        B3: =========================================================================
        Оператор '&' - побитовое И.
        Число 5 побитово записывается как 101
        Число 1 побитово записывается как 001
        Сравниваем биты, и записываем те, которые встречаются в обоих числах.
        В данном случае, встречается только начальный бит, и операция 5 & 1 вернет единицу.
        ===-=========================================================================

        B4: =========================================================================
        На десятой строчке инклуда 'interiors.inc' был объявлен массив с идентификатором static:
        static Places[][plInfo] = {
        Необходимо заменить static на new:
        new Places[][plInfo] = {
        В таком случае, код скомпилируется.
        Ссылка на код инклуда: https://gist.github.com/Zaur-Lumanov/39bd084ad8ecb5fd9876
        ===-=========================================================================

        B5: =========================================================================
        https://gist.github.com/Zaur-Lumanov/6ae3a7e784662ffe61d2
        ===-=========================================================================

        */


    PHP код:
    answerBlock_Dr.Deft()
    {
        
    /*
        A1 - 1 +
        A2 - 4 +
        A3 - 2 +
        A4 - 4 +
        A5 - 2 -
        A6 - 1 +
        A7 - 2 -
        A8 - 2 +
        A9 - 4 +
        A10 - 2 +

        B2 
        #include a_samp

        public OnFilterScriptInit()
        {
            new i, N = -10; 
            for (i = 0; i < N; i--) printf("+");
        }  

        B3
        Возвращает 0 при четном числи и 1 при нечетном
        Можно использовать для расставления домов на улицы или викторины

        B4

        #include a_samp

        public OnFilterScriptInit()
        {
            #include "Data\interiors.inc"   
            for (new i, l = sizeof (Places); i < l; i++)
            {
                printf("%d. Name: '%s' | Interior: %d | Pos: %0.2f, %0.2f, %0.2f", i + 1, Places[i][Name], Places[i][Interior],
                    Places[i][X], Places[i][Y], Places[i][Z]);
            }
        }  

        B5

        stock RemoveSpaces(string[])
        {
           while(strfind(string, " ") > 0)
           {
               strdel(string, strfind(string, " "), strfind(string, " ")+1);
           }
            return string;
        }
        */


    PHP код:
    answerBlock_continue()
    {
        
    /*
        A1) 1 +
        A2) 4 +
        A3) 3 -
        A4) 4 +
        A5) 3 +
        A6) 2 -
        A7) 3 +
        A8) 3 -
        A9) 4 +
        A10) 2 +
        

        B1)
        Использовать препроцессор - #pragma semicolon
        #include a_samp
        #pragma semicolon 0


        public OnFilterScriptInit()
        {
            new a = 50, b = 10, c = 30
            a = b + c + a
            b -= a
            c = a + b

            printf("%d", c)
        }
        B2) 
        #include <a_samp>

        main()
        {
            new i, N = 10;
            for (i = 0; i < N; i++) printf("%d \t +", i);
        }
        B3)
        Возвращает Побитовое "И" (1 вернет)
        допустим value = 5
        0000 0101 <- это 5
        0000 0001 <- это 1
        -------------
        0000 0001
        Ну допустим если этот случай то можно использовать в электронике
        Там же как, если в розетке есть ток, то это 1, если тока нет 0
        B4) 
        Используеться static переменная, которая ограничивает область видимости из инклуда
        enum plInfo
        {
            Name[50],
            Interior, 
            Float: X,
            Float: Y,
            Float: Z
        }

        new Places[][plInfo] = {
            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},    
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},    
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},    
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},    
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };  
        B5) 
        main()
        {
            new msg[] = " Конкрус от LightCode ";
            RemoveSpaces(msg);
            printf("Результат:%s", msg);
        }
        
        stock RemoveSpaces(input[], DelSymbol = ' ')
        {
            new pos;
            for(pos = strlen(input); input[pos] <= DelSymbol; ) pos--;
            input[pos + 1] = EOS;
            for(pos = 0; input[pos] <= DelSymbol; ) pos++;
            strdel(input, 0, pos);
        }
            
        */


    PHP код:
    answerBlock_Valera_Trefilov()
    {
        
    /*
        A:

        A1: 1; +
        A2: 4; +
        A3: 2; +
        A4: 4; +
        A5: 1; -
        A6: 2; -
        A7: 3; +
        A8: 2; +
        A9: 1; -
        A10: 2; +
        
        B:

        B1:
        #pragma semicolon false

        B2:
        #include a_samp

        public OnFilterScriptInit()
        {
            new i, N = 10; 
            for (i = 0; i <= N; i--) printf("+");
        }  


        B3:
        Функция используется для обнуления битов и для вывода бита, в данном случае выведет число 1.

        B4:
        #define FILTERSCRIPT (нужно указать) статья вики: http://wiki.sa-mp.com/wiki/Creating_A_Simple_Administration_FilterScript

        Насчет ошибки, тщательно проверил всё, не знаю что может пойти не так, разве что из-за того что не грузятся массивы,
        мод не компилирует.

        B5: 

        stock RemoveSpaces(string[])
        {
            for(new i=0; i<23; i++) if(string[i]==' ') strdel(string, i, i+1);
            return string;
        }
        */


    PHP код:
    answerBlock_Profyan()
    {
        
    /*
        A1) 1 +
        A2)4 +
        A3)2 +
        A4)3 -
        A5)3 +
        A6)1 +
        A7)3 +
        A8)4 -
        A9)4 +
        A10)3 -


        Часть В

        B2)
        #include a_samp

        public OnFilterScriptInit()
        {
            new i, N = 10; 
            for (i = 0; -i < N; i--) printf("+");
        }  

        B3)
        Эта функция возвращает число , к которому было применено побитовое и.
        Т.к вторым операндом выступает 1, то конечный результат будет либо 1(если входное число != 0) либо 0(если равно 0).

        Это нужно , например, для определения числа. Т.е не равно ли оно нулю. 

        B4)

        Скриптер в include использовал оператор Static,к которому мы имеем доступ непосредственно только в инклуде. Для того, чтобы сделать функцию видимой за пределами инклуда, нужно сделать функцию публичной. Т.е поставить префикс new.




        new Places[][plInfo] = {
            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},    
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},    
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},    
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},    
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        }; 

        B5)
        #include a_samp

        public OnFilterScriptInit()
        {
            new str[] = "любая строка для теста";
            RemoveSpaces(str);
            printf("Результат: '%s'", str);
        }


        stock RemoveSpaces(string[])
        {
        for(new i; i<strlen(string); i++)
        {
        if(string[i] == 32) strdel(string,i,i+1);
        }
        return string;
        }
        */


  5. #4
    Ich liebe Deutschland Аватар для Фора
    Регистрация
    19.07.2010
    Сообщений
    3,615
    Репутация: 284

    Звание: как роза среди колючек
    Работы участников части A и B: (Part II)

    PHP код:
    answerBlock_http.kz()
    {
        
    /*
        Часть А:
        1. 1 +
        2. 4 +
        3. 2 +
        4. 4 +
        5. 4 -
        6. 2 -
        7. 3 +
        8. 2 +
        9. 4 +
        10. 2 +
        
        
        Часть В:

        1.

        Директива процессора #pragma semicolon 0, отключает ошибку 001, не обращает внимание на отсутствие ;

        #include a_samp

        // [==== Ваше решение ====]

        #pragma semicolon 0

        // [==== Конец решения ====]

        public OnFilterScriptInit()
        {
            new a = 50, b = 10, c = 30
            a = b + c + a
            b -= a
            c = a + b
            
            printf("%d", c)
        } 

        2.

        new i, N = 10; 
        for (i = 0; i < N; i++) printf("+");

        3.

        //

        4.

        static используется только в пределах текущего файла interiors.inc, у скрипта доступа к переменной Places нет.

        static Places[][plInfo] = {
            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };

        Для решения проблемы необходимо заменить static на new

        new Places[][plInfo] = {
            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };

        5.

        RemoveSpaces(string[])
        {
            for(new i = 0; i < strlen(string); i++)
                if(string[i] == ' ') strdel(string, i, i + 1);
        }

        */


    PHP код:
    answerBlock_Prolific()
    {
        
    /*
        Part A
        A1) 1 +
        A2) 4 +
        A3) 2 +
        A4) 4 +
        A5) 3 + 
        A6) 1 +
        A7) 2 -
        A8) 2 + 
        A9) 4 +
        A10) 2 +

        Part B
        B1)
        Можно использовать дефайн
        #include a_samp 
        #define skobka ;
        public OnFilterScriptInit() 
        {
            new a = 50, b = 10, c = 30skobka
            a = b + c + a skobka
            b -= a skobka
            c = a + b skobka
            printf("%d", c) skobka
        }

        B2)
        #include a_samp 
        public OnFilterScriptInit() 
        { 
            new i, N = 10;
            for (i = 0; i < N; N--) printf("+"); 
        }  

        B3) 
        Функция определяет является ли число четным, если да, то возвращает 0 иначе 1
        Это и есть способ применения побитового оператора & в данном случае.

        B4)
        static может быть использован лишь в файле, в котором он объявлен. 
        Следовательно можно заменить static на new и ошибок не будет.
        Также можно слегка оптимизировать код, сократив число ячеек в переменной Name энуменатора plInfo с 50 до 24
        (Максимальная длина имени 23 + '\0' символа)

        B5)
        stock RemoveSpaces(string[])
        {
            for(new i = 0; string[i] != '\0'; i++)
            {
                if(string[i] == ' ')
                {
                    strdel(string, i, i+1);
                    i--;//Возвращаемся назад, чтобы узнать не пропустили ли мы пробел.
                }
            }
        }
        */


    PHP код:
    answerBlock_HappyEvgen()
    {
        
    /*
        Часть А.

        А1 - 1 +
        А2 - 1 -
        А3 - 2 +
        А4 - 4 +
        А5 - 3 +
        А6 - 1 +
        А7 - 3 +
        А8 - 2 +
        А9 - 4 +
        А10 - 2 +


        Часть В.


        В1.

        include a_samp

        // [==== Ваше решение ====]
        #pragma semicolon 0
        // [==== Конец решения ====]

        public OnFilterScriptInit()
        {
        new a = 50, b = 10, c = 30
        a = b + c + a
        b -= a
        c = a + b

        printf("%d", c)
        }

        В2.

         

        #include a_samp

        public OnFilterScriptInit()
        {
        new i, N = 10; 
        for (i = 0; i < N; N--) printf("+");
        }

        В3.

        Оператор '&' - побитовое "И".
        Число 5 побитово, записывается как 101.
        Число 1 побитово, записывается как 001.
        Сравним биты, и запишем те, которые встречаются в обоих числах.
        В нашем случае, встречается только начальный байт, и операция 5 & 1 вернет единицу.

        В4.

         

        new Places[][plInfo] = 
        {
        {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
        {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
        {"24/7 3", 18, -30.946699,-89.609596,1003.546875}, 
        {"24/7 4", 16, -25.132598,-139.066986,1003.546875}, 
        {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
        {"24/7 6", 6, -26.691598,-55.714897,1003.546875}, 
        {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554}, 
        {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };


        В5.

        stock RemoveSpaces(string[]) 
        { 
        new i, space = 0; 
        new temp[256]; 
        format(temp,sizeof(temp),"%s",string); 
        while (temp[i] != '\0') 
        { 
        if (temp[i] == ' ') 
        ++space; 
        if (temp[i] != ' ') 
        string[i - space] = temp[i]; 
        i++; 
        } 
        string[i - space] = '\0'; 
        }
        */


    PHP код:
    answerBlock_maxick12()
    {
        
    /*
        A:
        A1:1 +
        A2:4 +
        A3:2 +
        A4:4 +
        A5:3 +
        A6:2 -
        A7:4 -
        A8:2 +
        A9:4 +
        A10:4 -

        B:
           
             B1: А разве такое возможно ?:Р
             B2:
            #include a_samp

        public OnFilterScriptInit()
        {
            new i, N = 10; 
            for (i = 0; i < N; i++) printf("+");
        } 
             B3: Возвращает 1 в любом случаи, Может применяться для многих систем. 
             B4:
             static меняем на new в \filterscripts\Data\interiors.inc и все чики пуки :Р
             B5:
             #include a_samp

        public OnGameModeInit()
        {
            new str[] = "любая строка для теста";
            RemoveSpaces(str);
            printf("Результат: '%s'", str);
        }
        main(){ printf("1");}
        stock RemoveSpaces(string[])
        {
            for(new i; string[i]; i++)
            {
                if(strfind(string, " ", true) != -1)
                {
                new where = strfind(string, " ", true);
                strdel(string, where, where+1);
                }
            }
        }
        */


    PHP код:
    answerBlock_Dychuk()
    {
        
    /*
        A1: 1 +
        A2: 4 +
        A3: 2 +
        A4: 4 +
        A5: 3 +
        A6: 1 +
        A7: 4 -
        A8: 2 +
        A9: 4 +
        A10: 2 +

        B1:

        ";" можно использовать через define, но мне кажеться что я не так понимаю задание, но все же:

        #include a_samp 

        #define END ;

        public OnFilterScriptInit() 
        { 
            new a = 50, b = 10, c = 30 END
            a = b + c + a END
            b -= a END
            c = a + b END
             
            printf("%d", c)END
        }  

        Но как по мне лучше бы использовать без него:

        #include a_samp 

        public OnFilterScriptInit() 
        { 
            new a = 50, b = 10, c = 30;
            a = b + c + a;
            b -= a;
            c = a + b;
             
            printf("%d", c);
        }  

        Хотя это слишком легкое задание для категории B =)

        B2:

        #include a_samp 

        public OnFilterScriptInit() 
        { 
            new i, N = 10;  
            for (i = 0; i < N; i++) printf("+"); 
        }  

        B3:

        Функция Func(5) выполняет логическое умножение числа 5 на 1

        0101
        0001
        ----
        0001 -> результат в двоичной системе. Возвращает значение в десятичной системе

        Можно применять для экономии памяти. Например для числа 11 и 15 можно использовать только 1 байт (1011 1111)

        B4:

        Ошибки:

        Нужно заменить static на new т.к. он нужен для того чтобы создавать переменные с одинаковым именем в инклуде и в самом скрипте. В текущем случае переменная Places используеться в скрипте.
        Так же была исправлена ошибка при создании цыкла.

        // include interiors.inc

        enum plInfo 
        { 
            Name[50], 
            Interior,  
            Float: X, 
            Float: Y, 
            Float: Z 
        } 

        new Places[][plInfo] = { 
            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875}, 
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438}, 
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},     
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},     
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250}, 
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},     
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},     
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554} 
        };

        ---

        // Скрипт intlist.pwn

        #include a_samp
        #include "Data\interiors.inc"

        public OnFilterScriptInit()
        {
            for(new i=0; i<=sizeof(Places); i++)
            {
                printf("%d. Name: '%s' | Interior: %d | Pos: %0.2f, %0.2f, %0.2f", \
                i + 1, Places[i][Name], Places[i][Interior], Places[i][X], Places[i][Y], Places[i][Z]);
            }
        }


        B5:

        #include a_samp 

        public OnFilterScriptInit() 
        { 
            new str[] = "любая строка для теста"; 
            printf("Результат: '%s'", RemoveSpaces(str)); 
        } 

        stock RemoveSpaces(string[]) 
        { 
            new newtext[128], b;
            for(new i = 0; i <= strlen(string); i++)
            {
                if(string[i] != ' ')
                {
                    newtext[b] = string[i];
                    b++;
                }
            }
            return newtext;
        }  


        */


    PHP код:
    answerBlock_McLuhan()
    {
        
    /*
        А1: 1 +
        А2: 4 +
        А3: 2 +
        А4: 4 +
        А5: 3 +
        А6: 1 +
        А7: 2 -
        А8: 2 +
        А9: 4 +
        А10: 2 +

        // =========== B1
        #pragma semicolon [значение] 
        Значение (0) дает возможность не ставить точку с запятой вконце

        // [==== Ваше решение ====]
        #pragma semicolon 0
        // [==== Конец решения ====]

        // =========== B2
        main()
        {
            new i, N = 10;
            for (i = 0; i < N; N--) printf("+");
        }

        // =========== B3
        Определяет чётность числа.

        // =========== B4
        Нужно static заменить на new

        Измененный исходный код \filterscripts\Data\interiors.inc:
        enum plInfo
        {
            Name[50],
            Interior,
            Float: X,
            Float: Y,
            Float: Z
        }

        new Places[][plInfo] = {
            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };

        // =========== B5
        RemoveSpaces(string[])
        {
            for(new i = strlen(string); i >= 0; i--)
            {
                switch(string[i])
                {
                    case ' ': strdel(string, i, i+1);
                }
            }
            return string;
        }
        */


    PHP код:
    answerBlock_Lucky533()
    {
        
    /*
        А1. 1) +
        А2. 4) +
        А3. 4) -
        А4. 4) +
        А5. 3) +
        А6. 2) -
        А7. 4) -
        А8. 2) +
        А9. 4) +
        А10 2) +
        
        Б1. -
        Б2.
         for (i = 0; i < N; i--) printf("+");
        заменяем на  for (i = 0; i < 10; ++i) printf("+");
        Б3.
        Она возвращает вместо цифры, которая написана в переменной 0 или 1. Если в переменной число 0, то тогда и выводиться 0, а если больше нуля выводиться 1.
        Б4 -
        Б5 -

        */    


    PHP код:
    answerBlock_regnaR()
    {
        
    /*
        A1 - 1 +
        A2 - 4 +
        A3 - 2 +
        A4 - 4 +
        A5 - 3 +
        A6 - 2 -
        A7 - 3 +
        A8 - 4 -
        A9 - 4 +
        A10 - 2 +


        B1 - С помощью директивы #pragma с параметрами semicolon 0
            #include a_samp 

            // [==== Ваше решение ====] 
            #pragma semicolon 0
            // [==== Конец решения ====] 

            public OnFilterScriptInit() 
            { 
                new a = 50, b = 10, c = 30 
                a = b + c + a 
                b -= a 
                c = a + b 
                 
                printf("%d", c) 
            }  

        B2 -
            #include a_samp 

            public OnFilterScriptInit() 
            { 
                new i, N = 10;  
                for (i = 0; i < N; i++) printf("+"); 
            }  

        B3 - 
            Функция Func(value) определяет нечетность числа, передаваемого в функцию (в нашем случае в Func передается testVal). 
            Возвращает 1 если value нечетное, и 0 если четное или равно 0.

        B4 -
            При объявлении статичной глобальной переменной область видимости этой переменной остаётся в файле, где эта переменная была объявлена.
            Чтобы код мог скомпилироваться, нужно в файле interiors.inc заменить строчку
                static Places[][plInfo] = { 
            на
                new Places[][plInfo] = {

        B5 -

            new i = strlen(string);
            while( i >= 0 )
            {
                if( string[i] == ' ' )
                {
                    for( new j = i; j < strlen(string); j++ )
                    {
                        string[j] = string[j+1];
                    }
                }
                i--;
            }
        */


    PHP код:
    answerBlock_serij-68tmb()
    {
        
    /*
        Ответы на часть А:

        A1 = 1 +
        A2 = 4 +
        A3 = 2 +
        A4 = 4 +
        A5 = 3 +
        A6 = 1 +
        A7 = 3 +
        A8 = 2 +
        A9 = 4 + 
        A10 = 2 +

        =================================================================

        Ответы на часть B:

        B1: Чтобы компилятор не обращал внимание на ; в конце строк, нужно в начале скрипта прописать "#pragma semicolon 0". Применение:
            #include a_samp

            // [==== Ваше решение ====]
            #pragma semicolon 0
            // [==== Конец решения ====]

            public OnFilterScriptInit()
            {
                new a = 50, b = 10, c = 30
                a = b + c + a
                b -= a
                c = a + b

                printf("%d", c)
            } 

        B2: 
            #include a_samp

            public OnFilterScriptInit()
            {
                 new i, N = 10; 
                 for (i = 0; i < N; N--) printf("+");
            }  

        B3: Функция Func(value) применяет операцию побитового И (AND) к целочисленным числам value и 1. 
        Так как у числа 1 только первый бит принимает значение "1", то все остальные биты у результирующего числа 
        становятся равными 0, а сам результат операции принимает значение "1" (если value нечетно: value = 0b...1) 
        или "0" (если value четно: value = 0b...0). В консоли будет сообщение "1" или "0" соответственно. 
        Таким образом, эту функцию можно использовать на определение четности/нечетности числа.

        B4: Вся суть в ключевом слове "static" при объявлении массива Places. Этот модификатор дает доступ 
        к массиву только из того метода, где этот массив инициализируется. 
        Таким образом, доступ к массиву в фильтрскрипте имеется только в основном теле кода,
        а в паблике OnFilterScriptInit() доступа к нему нет. 
        Для исправления ситуации достаточно сменить модификатор "static" на "new", и всё прекрасно заработает.

        Исправленный код \filterscripts\Data\interiors.inc:

            enum plInfo
            {
                Name[50],
                Interior, 
                Float: X,
                Float: Y,
                Float: Z
            }

            new Places[][plInfo] = {
                {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
                {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
                {"24/7 3", 18, -30.946699,-89.609596,1003.546875},    
                {"24/7 4", 16, -25.132598,-139.066986,1003.546875},    
                {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
                {"24/7 6", 6, -26.691598,-55.714897,1003.546875},    
                {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},    
                {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
            };  

        B5: 
                stock RemoveSpaces(string[])
                {
                    new l = strlen(string);
                    new str[128], strr[128], pos[2] = {-1, -1};
                    if(string[0] != ' ') pos[0] = 0;
                    for(new i; i < l; i++)
                    {
                        if(string[i] == ' ')
                        {
                            if(pos[0] != -1) pos[1] = i;
                            else pos[0] = i+1;
                        }
                        if(i == l - 1) pos[1] = i+1;
                        if(pos[0] != -1 && pos[1] != -1)
                        {
                            strmid(str, string, pos[0], pos[1]);
                            pos[0] = -1; pos[1] = -1;
                            i--;
                            strcat(strr, str);
                        }
                    }
                    format(string, l, strr);
                }
            */


    PHP код:
    answerBlock_Yshmeel()
    {
        
    /*
        A1. 1 +
        A2. 4 +
        A3. 4 -
        A4. // #4 +
        A5. 3 +
        A6. 2 -
        A7. 4 -
        A8. 2 +
        A9. 4 +
        A10. 2 +

        B

        B1-Не смог додуматься просто закрыл весь код и все
        public OnFilterScriptInit()
        {
            new a = 50, b = 10, c = 30;
            a = b + c + a;
            b -= a;
            c = a + b;

            printf("%d", c);
        }



        B2 -
        new i;
        for (i = 0; i < 10; ++i) printf("+");
        B3 - Как я понял она возвращает вместо цифры которая написано в переменной 0 или 1 если ты ставишь 0 то тогда и выводиться 0 а если больше нуля выводиться 1.
        B4. Файл interiors.inc
        enum plInfo
        {
            Name[50],
            Interior, 
            Float: X,
            Float: Y,
            Float: Z
        }

        new Places[][plInfo] ={
            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},    
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},    
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},    
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},    
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };  

        FS -
        Стандартный код

        B5 -
        main()
        {
            new str[] = "test test";
            RemoveSpaces(str);
        }

        stock RemoveSpaces(string[])
        {

        // yoio stock ia?acaao i?iaaeu ii e?ayi niiauaiee e caiaiyao a?oiio i?iaaeia ia iaei i?iaae. Aaoi? - iaecaanoii.

        new len = strlen(string);
        new lenx = strlen(string), c = len - 1, spaces;

        for(; c>=0; c--)
        {
        switch(string[c])
        {
        case ' ', '\t', '\r': spaces += 1;
        default :
        {
        if(spaces > 1)
        {
        memcpy(string, string[c+spaces+1], (c+2) *4, (lenx - c - spaces - 1) *4, lenx);
        len -= spaces - 1;
        }
        if(spaces > 0)
        {
        // printf("?acoeuoaosss: %s", string[c] = str);
        printf("?acoeuoao: testtest", string[c+1]);
        spaces = 0;
        }
        }
        }
        }
        string[len] = 0;
        }
        */


    PHP код:
    answerBlock_DeadLine()
    {
        
    /*    
        -------------- Задания на A

        A1 - 1 +
        A2 - 4 +
        A3 - 4 -
        A4 - 4 +
        A5 - 4 -
        A6 - 3 -
        A7 - 4 -
        A8 - 2 +
        A9 - 4 +
        A10 - 2 +



        -------------- Задания на B


        B2----------------------------------

        public OnFilterScriptInit()
        {
            new i;
         -------Первый вариант
            new i;
            while (i < 10) i++,printf("+ %d",i);
        
            
        //    for (i = 0; i < 10; i++) printf("+ %d",i);// 2ой вариант
        }

        ------------------------------------
        B3 - тут 2 цифры. 0-1  
        Если value  больше - 0 выводится 1
        else == 0


        B4. ------------------------------------
        В инклуде interiors.inc

        enum plInfo
        {
            Name[50], Interior, Float: X, Float: Y, Float: Z
        }
        static Places[][plInfo] ={
        {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
        {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
        {"24/7 3", 18, -30.946699,-89.609596,1003.546875},
        {"24/7 4", 16, -25.132598,-139.066986,1003.546875},
        {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
        {"24/7 6", 6, -26.691598,-55.714897,1003.546875},
        {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},
        {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };
        public OnFilterScriptInit()
        {
            for (new i, l = sizeof (Places)-1; i < l; i++)
            {
                printf("%d. Name: '%s' | Interior: %d | Pos: %0.2f, %0.2f, %0.2f", i + 1, Places[i][Name], Places[i][Interior],
                    Places[i][X], Places[i][Y], Places[i][Z]);
            }
        }
        B5------------------------------------
        public OnFilterScriptInit()
        {
            new str[] = "Любая строка для теста";
            RemoveSpaces(str);
            printf("Результат: '%s'", str);
        }
        stock RemoveSpaces(string[])
        {
            for(new i=0; i<strlen(string); i++)
            {
                if(string[i]==' ') strdel(string, i, i+1);
            }
        }
        ------------------------------------
        */


  6. #5
    Ich liebe Deutschland Аватар для Фора
    Регистрация
    19.07.2010
    Сообщений
    3,615
    Репутация: 284

    Звание: как роза среди колючек
    Работы участников части A и B: (Part III)

    PHP код:
    answerBlock_Artur4eggg()
    {
        
    /*
        1) Ответы на часть А:

        A1 - 1 +
        A2 - 4 +
        A3 - 2 +
        A4 - 4 +
        A5 - 3 +
        A6 - 1 +
        A7 - 3 +
        A8 - 2 +
        A9 - 4 +
        A10 - 2 +

        2) Ответы на часть B:

        //B1

        //
        //B2
        #include <a_samp>

        public OnFilterScriptInit()
        {
            new i, N = 10;
            for (i = 0; i < N; i++) printf("+");
        }

        //
        //B3
        Если данное нам число четное, то в консоль выводится число 0, а если же данное нам число нечетное, то в консоль выводится число 1.
        //
        //B4
        Во-первых, для подключения инклуда нужно использовать следующие символы: < и >. Пример: #include <a_samp>
        Во-вторых, для того, чтобы не возникала следующая ошибка: error 013: no entry point (no public functions), нужно использовать в коде main() {}
        В-третьих, в инклуде использовалось объявление переменной static, которая объявляет переменную только внутри скрипта(локальная), то есть данная переменная не будет видна любым другим скриптам, если она к ним подключена.
        Правильный код INTLIST.PWN:

        #include <a_samp>
        #include <../../filterscripts/Data/interiors>

        public OnFilterScriptInit()
        {
            for (new i, l = sizeof (Places); i < l; i++)
            {
                printf("%d. Name: '%s' | Interior: %d | Pos: %0.2f, %0.2f, %0.2f", i + 1, Places[i][Name], Places[i][Interior],
                    Places[i][X], Places[i][Y], Places[i][Z]);
            }
        }

        Правильный код INTERIORS.INC:

        main() {}

        enum plInfo
        {
            Name[50],
            Interior,
            Float: X,
            Float: Y,
            Float: Z
        }

        new Places[][plInfo] = {
        {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
        {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
        {"24/7 3", 18, -30.946699,-89.609596,1003.546875},
        {"24/7 4", 16, -25.132598,-139.066986,1003.546875},
        {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
        {"24/7 6", 6, -26.691598,-55.714897,1003.546875},
        {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},
        {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };

        //
        //B5
        stock RemoveSpaces(string[])
        {
            new position = -1;
            while((position = strfind(string, " ")) != -1)
            {
                for( ; position < strlen(string); position++)
                {
                    string[position] = string[position+1];
                }
            }
        }
        //
        */


    PHP код:
    answerBlock_spartak09az()
    {
        
    /*
        Задания части A:                                    
        A1 - 2 -                                               
        A2 - 4 +                                                                              
        A3 - 2 +
        A4 - 4 +
        A5 - 3 +
        A6 - 1 +
        A7 - 4 -
        A8 - 2 +
        A9 - 1 -
        A10 - 2 +

        Задания части B:
        B1 - #pragma semicolon 0 
        #pragma semicolon 0  - позволяет компилятору не обращать внимание на строки, в которых не поставлен знак ;
        B2:
        {
            new i, N = 10; 
            for (i = 0; i < N; N--) printf("+");
        }  

        B3 - Func(value) вернет число 1.

        B4 - не сделал к сожалению, но был близок..

        B5:
        public OnGameModeInit()
        {
        new str[] = "любая строка для теста";
        printf("результат: '%s'", RemoveSpaces(str));
        return 1;
        }
        stock RemoveSpaces(str[])
        {
        new del1;
        for(new i = 0; i < strlen(str); i++)
        {
        new del2 = del1 + 1;
        del1 = strfind(str, " ", true);
        if(del1 != -1)
        strdel(str, del1, del2);
        }
        return str;
        }
        */


    PHP код:
    answerBlock_iBorland()
    {
        
    /*
        A1. 1. +
        A2. 4. +
        A3. 2. +
        A4. 3. -
        A5. 2. -
        A6. 1. +
        A7. 2. -
        A8. 2. +
        A9. 4. +
        A10. 2. +
        
        Опоздания:
        А1. 1. + 
        A2. 4. +
        A3. 2. +
        A4. 3. -
        A5. 2. -
        A6. 1. +
        A7. 3. +
        A8. 2.  +
        A9. 4. +
        A10. 2. +
        
     
        
        B1. Существует директива препроцессора #pragma semicolon. Она заставляет компилятор игнорировать ошибку error 001. (Отсутствие ;)

        #include a_samp

        #pragma semicolon 0 -- Ноль - компилятор не будет ругаться на error 001; Единица - компилятор будет ругаться на error 001;

        public OnFilterScriptInit()

        {

        new a = 50, b = 10, c = 30

        a = b + c + a

        b -= a

        c = a + b

        printf("%d", c)

        }

        ----------------------------------------------------------- [ END ] -------------------------------------------------------------

        B2.

        #include a_samp

        public OnFilterScriptInit()

        {

        new i, N = 10;

        for (i = 0; i < N; i--) printf("+");

        }

        ----------------------------------------------------------- [ END ] -------------------------------------------------------------

        B3.

        value % 1; & - операция побитовое И. Эта операция выставляет значение бита в 1, только в том случае, 
        если соответствующие биты в первом и втором числе равны 1 одновременно.

        В числе 1 единице равен только последний бит. (00000000000000000000000000000001), 
        если в числе последний бит равен единице - число не четное. Соответственно функция Func возвращает

        единицу в случае если число, передаваемое в параметре функции нечетное, или ноль, если число четное.

        Пример:

        Func(11)

        Число 11 в двоичном коде:

        00000000000000000000000000001011

        &

        00000000000000000000000000000001

        =

        00000000000000000000000000000001

        Вернёт единицу, так как число не четное.

        Побитовое И зачастую применяют для того, чтобы узнать какое значение 0 или 1 стоит в

        определенном бите числа.

        ----------------------------------------------------------- [ END ] -------------------------------------------------------------

        B4.

        B5.

        stock RemoveSpaces(string[])

        {

        for(new i = 0; strfind(string," ") != -1; i++)

        {

        strdel(string, strfind(string," "), strfind(string," ") + 1);

        }

        }
        
        */


    PHP код:
    answerBlock_Vitya_Saveliev()
    {
        
    /*
        Часть А:

        A1: 1; +
        A2: 4; +
        A3: 2; +
        A4: 3; -
        A5: 2; -
        A6: 2; -
        A7: 3; +
        A8: 2; +
        A9: 1; -
        A10: 2; +

        Часть B:

        B1: -

        B2:
        #include a_samp

        public OnFilterScriptInit()
        {
            new i, N = 10; 
            for (i = 0; i < N; i++) printf("+");
        }

        B3: Данная функция всегда возвращает - 1. Не знаю для чего она может пригодится.
        B4:
        static - переменные, которые видны только в пределах текущего файла.
        Не создаются перед и не уничтожаются после выполнения функции.

        enum plInfo
        {
            Name[50],
            Interior, 
            Float: X,
            Float: Y,
            Float: Z
        }

        new Places[][plInfo] = {
            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},    
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},    
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},    
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},    
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };

        B5:
        stock RemoveSpaces(string[]) 
        {
            for(new i = strlen(string)-1; i != -1; i--)
            {
                if(strfind(string[i], " ", true) == -1) continue;
                strdel(string, i, i+1);
            }
            return string;
        }


        */


    PHP код:
    answerBlock_joker007()
    {
        
    /*
        Часть А.
        1. 1 +
        2. 4 +
        3. 2 +
        4. 4 +
        5. 3 +
        6. 2 -
        7. 4 -
        8. 2 +
        9. 4 +
        10. 2 +

        Часть B
        1.
            #include a_samp

            // [==== Ваше решение ====]
            Pawn не возможно убрать макрос ';' поэтому код просто нужно закаментировать.
            // [==== Конец решения ====]

            public OnFilterScriptInit()
            {
                /*new a = 50, b = 10, c = 30
                a = b + c + a
                b -= a
                c = a + b
                
                printf("%d", c)* /
            }  

        2. 
            #include a_samp

            public OnFilterScriptInit()
            {
                new i, N = 10; 
                for (i = 0; i < N; i++) printf("+");
            } 

        3. Побитовый калькулятор с оператором конъюнкции
        4. static - переменные, которые видны только в пределах текущего файла,он написан в файле inc а вызывается в pwn. Нам нужно заменить 'static' на 'new'.

            enum plInfo
            {
                Name[50],
                Interior, 
                Float: X,
                Float: Y,
                Float: Z
            }

            new Places[][plInfo] = {
                {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
                {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
                {"24/7 3", 18, -30.946699,-89.609596,1003.546875},    
                {"24/7 4", 16, -25.132598,-139.066986,1003.546875},    
                {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
                {"24/7 6", 6, -26.691598,-55.714897,1003.546875},    
                {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},    
                {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
            }; 

        5. 

            #include a_samp

            public OnFilterScriptInit()
            {
                new str[] = "любая строка для теста";
                RemoveSpaces(str);
                printf("Результат: '%s'", str);
            }

            RemoveSpaces(string[])
            {
                new s = ' ';
                for(new j = 0; j != strlen(string); j++)
                {
                    if(string[j] == s)
                        strdel(string, j, j+1);
                }
                return string;
            }
        */


    PHP код:
    answerBlock_Timur_Diez()
    {
        
    /*
        А1. 1 +
        А2. 4 +
        А3. 2 +
        А4. 4 +
        А5. 2 -
        А6. 2 -
        А7. 3 +
        А8. 3 -
        А9. 4 +
        А10. 2 +

        В1. Не знаю. 
        В2.
        #include a_samp

        public OnFilterScriptInit()
        {
            new i, N = 10; 
            for (i = 0; i < N; i++) printf("+");
        }  



        В3. Побитовое И. Т.е 1 & 0 = 0
        В4. Папку Data нужно перетащить в gamemodes
        В5. 
        #include a_samp

        public OnFilterScriptInit()
        {
            new str[] = "любая строка для теста";
            RemoveSpaces(str);
            printf("Результат: '%s'", str);
        }

        stock RemoveSpaces(string[])
        {
            format(string,128, "");
        }

        */


    PHP код:
    answerBlock_EasyChill()
    {
        
    /*
        Часть A:
        A1. 1 +
        A2. 4 +
        A3. 2 +
        A4. 4 +
        A5. 3 + 
        A6. 1 +
        A7. 4 -
        A8. 2 +
        A9. 4 +
        A10. 2 +
        
        Часть В:
        B1.
        Я решил эту проблему так: использовал директиву  #pragma semicolon 0 , которая, собственно, позволяет компилятору игнорировать символ ";"
        #include a_samp 

        // [==== Ваше решение ====]
        #pragma semicolon 0 
        // [==== Конец решения ====] 

        public OnFilterScriptInit()
        {
            new a = 50, b = 10, c = 30
            a = b + c + a
            b -= a
            c = a + b

            printf("%d", c)
        } 
        B2. 
        Измененный код:
        #include a_samp
        public OnFilterScriptInit()
        {
            new i, N = 10; 

            for (i = 0; i < N; N--) printf("+");

        } 


        B3.
        В приведенном коде функция Func(value) проверяет на нечетность число, при условии, что оно не равно нулю.
        Данную функцию можно использовать при создании каких-нибудь интересных систем, например, при формировании регистрации в две команды.
        Мы создаем переменную, которая будет хранить количество участвующих игроков, и, 
        при появлении нового участника, к ней будет прибавляться 1 и через эту функцию будет
        определяться команда игрока (0 или 1, в зависимости от четности числа).
        B4.
        Переменная, созданная при помощи static  видна только в пределах текущего файла, то есть, если ее объявить в каком-нибудь инклюде, который, в последствии, подключить к моду/фильтерскрипту, то такая переменная будет недоступна извне инклюда.

        Для того, чтобы при компиляции ошибка не возникала, нужно изменить тип переменной в инклюде (с static на new):
        new Places[][plInfo] = {

            {"24/7 1", 17, -25.884498, -185.868988, 1003.546875},
            {"24/7 2", 10, 6.091179,-29.271898, 1003.549438},
            {"24/7 3", 18, -30.946699,-89.609596,1003.546875},    
            {"24/7 4", 16, -25.132598,-139.066986,1003.546875},    
            {"24/7 5", 4, -27.312299,-29.277599,1003.557250},
            {"24/7 6", 6, -26.691598,-55.714897,1003.546875},    
            {"Airport ticket desk", 14, -1827.147338, 7.207417, 1061.143554},    
            {"Airport baggage reclaim", 14, -1861.936889, 54.908092, 1061.143554}
        };  
        B5. 
        stock RemoveSpaces(string[]) 
        { 
            new s;//переменная, которая хранит позицию пробела 
            for(new a; a < strlen(string); a++)//цикл на такое количество повторений, сколько символов в строке 
            { 
                s = strfind(string, " ");//при помощи функции strfind задаем позицию пробела. если же его нет в строке, то переменная будет = -1 
                if(s == -1) break;//если переменная с позицией пробела = -1, то останавливаем цикл 
                else strdel(string, s, s+1);//если переменная действительно хранит позицию пробела, то удаляем его 
            } 
            return string;//возвращаем, собственно, строку без пробелов 
        }  
        
        */


    PHP код:
    answerBlock_lexjusto()
    {
        
    /*
        
        Часть A:

        A1) 1 +
        A2) 4 +
        A3) 2 +
        A4) 4 +
        A5) 3 +
        A6) 2 -
        A7) 3 +
        A8) 2 +
        A9) 4 +
        A10) 2 +


        Часть B:

        B1) Заставить можно кодом который говорит компилятору использовать точку с запятой в конце каждого выражения или нет (0 и 1 соответственно), 
        Используем перед OnFilterScriptInit - "#pragma semicolon 0"

        B2) 

        "

        #include a_samp

        public OnFilterScriptInit()
        {
        new i, N = 10; 
        for (i = 0; i < N; i++) printf("+");
        } 

        "

        B3) С помощью данной функции мы можем проверить нечетное ли число. Если число нечетное функция вернет 1, если четное - 0.

        B4) В коде инклуда нам мешает "static Places" изменяем его на "new Places" и все работает!

        B5) 

        "

        #include a_samp

        public OnFilterScriptInit()
        {
         new str[] = "любая строка для теста";
         RemoveSpaces(str);
         printf("Результат: '%s'", str);
        }


        stock RemoveSpaces(string[])
        {
        new i;
        while(string[i] == ' ') i++, strdel(string, 0, i);

        if(!i) return string;

        i = strlen(string) - 1;
        while(string[i] == ' ') i--, string[i + 1] = '\0';

        return string;
        }
        */


    PHP код:
        
        A1
    1. 
        
    A24. +
        
    A32. +
        
    A44. +
        
    A52. -
        
    A62. -
        
    A74. -
        
    A83. -
        
    A94. +
        
    A102. +
        
        
    Часть В:
        
        
    B1:
        
    // [==== Ваше решение ====]
        #pragma semicolon 0
        // [==== Конец решения ====]

        
    public OnFilterScriptInit()
        {
            new 
    501030
            a 
    a
            b 
    -= a
            c 
    b
            
            printf
    ("%d"c)
        }  
        
        
    B2:
        
    #include a_samp

        
    public OnFilterScriptInit()
        {
            new 
    i10
            for (
    0; -Ni--) printf("+");
        }  
        
        
    B3:
        
    в случае нечетного числа возвращает 1.
        
        B4
    :
        
    мы смотрим с расположения компилятора а не с расположения файла.
        
    к стати в коде будет утечка памяти.
        
        
    B5:
        
    stock RemoveSpaces(&string[])
        {
        new 
    steptmp[256];
        for(new 
    ilen=strlen(string); i<len;i++)
        {
            if(
    string[i]==' ')step++;
            
    tmp[i]=string[i+step];
        }
        
    format(stringsizeof(string), "%s"tmp);
        } 


  7. #6
    SYSTEM Аватар для Games
    Регистрация
    28.06.2010
    Адрес
    Moscow
    Возраст
    30
    Сообщений
    1,468
    Репутация: 478

    Звание: - луч света в тёмном царстве

    Комментарий от себя
    При оценке работ были такие критерии:
    - информативность и юзабилити интерфейса самого калькулятора. В случае вырвиглазных шрифтов, ярких / кислотных цветов, криво расположенных элементов и в целом неаккуратных ТД — оценка падает.
    - возможность решать сразу целое выражение. То есть должна быть возможность вписать в окошко выражение, а в коде должны правильно учитываться приоритеты операторов.
    В идеале, чтобы алгоритм вычисления основывался на обратной польской нотации.
    В совокупе формируется общая оценка о работе. Даже если код нормальный, но не вычисляется целое выражение, либо стрёмный интерфейс — no way получить нормальную оценку.



    Dychuk
    Текстдрав свиду приятен, но кнопки расположены криво относительно друг-друга, можно было по координатам выравнять.
    Код нечитабелен, в большей части мест присутствует много хардкода, что очень плохо для столь тривиальной задачи.
    Часть операций неверно работает, часть неточно.
    6/10 текстдрав
    20/40 код
    Итого 26 баллов.

    Annihilator
    Текстдрав приятен, но не хватает удобного закрытия (знаю, что мелочь. Но дьявол кроется в мелочах), также если набрать много операций (на всю ширину окна вычислений), то дальше операции банально не пишутся.
    Код более-менее нормальный, но очень не хватает принципа DRY.
    Текстдрав 8/10.
    Код 30/40.
    Итого 38 баллов.

    Prolific
    Круглые кнопочки сделаны весело, но это калькулятор, а не игровой автомат. Также не хватает бэкграунда и нужно наводить камеру в небо, чтобы видеть введенные данные.
    Нельзя совершать более одной операции подряд, это главный минус.
    По коду понравилось создание текстдрава по сетке и логичность в некоторых местах, но только в некоторых.
    Текстдрав 4/10.
    Код 25/40.
    Итого 29 баллов.

    Profyan
    Нельзя ввести многозначное число. Не закрывается текстдрав крестиком либо ESC. Некоторые операции неверно/или вообще не работают.
    Код не очень читабельный, почти всюду хардкод.
    Текстдрав 5/10.
    Код 20/40.
    Итого 25 баллов.

    serij-68tmb
    Текстдрав выглядит приятно, но не закрывается. Нельзя совершать операции одна за другой.
    Код пиздец. Нечего сказать.
    Текстдрав 7/10.
    Код 15/40.
    Итого 22 балла.

    Vitya_Saveliev
    Текстдрав более-менее. Нельзя совершать операции одна за другой. Нет закрытия.
    Код более-менее читабелен и не очень нагружен.
    Текстдрав 6/10.
    Код 27/40.
    Итого 33 балла.

    EasyChill
    Есть только текстдрав, из функционала только закрытие.
    Текстдрав 7/10.
    Код 0/40.
    Итого 7 баллов.

    iBorland
    Текстдрав нормальный. Понравилось, что можно писать целое выражение, а тогда вычислять. Учитываются приоритеты операторов.
    По коду всё хорошо.
    Текстдрав 8/10.
    Код 35/40.
    Итого 43 балла.

    Zaur_Lumanov
    Текстдрав приятный. Нельзя совершать операции одна за другой.
    Код ужасный, логики никакой. DRY тоже не придерживается.
    Текстдрав 7/10.
    Код 15/40.
    Итого 22 балла.

    Mcc
    Скрипт не откомпилировался. Чужие ошибки я исправлять не буду.
    Итого 0 баллов.

    UnO33
    Текстдрав приятный, но не очень информативный.
    Код пиздец.
    Текстдрав 6/10.
    Код 20/40.
    Итого 26 баллов.

    http.kz
    Текстдрав охуенный, вот только красный цвет сам по себе напрягает глаза.
    По коду всё хорошо, особых замечаний нет. Нельзя выполнять целое выражение.
    Текстдрав 8/10.
    Код 30/40.
    Итого 38 баллов.

    Dr.Deft
    Текстдрав не очень, не на всех кнопках четко размечены размеры и нужно тыкать мышкой в небо, чтобы попасть на нужную кнопку. Нельзя вычислять целое выражение.
    По коду пиздец.
    Текстдрав 5/10.
    Код 22/40.
    Итого 27 баллов.

    MCLuhan
    Текстдрав приятный, но не до конца информативен. Можно вводить выражение (хотя его не видно полностью), но приоритеты операторов не учитываются.
    По коду особых замечаний нет, но есть куда стремиться.
    Текстдрав 6/10.
    Код 28/40.
    Итого 34 балла.

    Timur_Diez
    При перемещении мышки по всему экрану с состоянием селекта кнопок происходит неведомый пиздец. Не все кнопки доступны. Нельзя вычислять целое выражение.
    По коду пиздец.
    Текстдрав 4/10.
    Код 15/40.
    Итого 19 баллов.

    ukrainian
    Текстдрав такой себе. Нельзя вычислять целое выражение, нельзя даже по одной операции за другой решать.
    По коду пиздец.
    Текстдрав 5/10.
    Код 15/40.
    Итого 20 баллов.

    spartak09az
    Судя по испанскому языку в названиях переменных, работа делалась не своими руками. Проверять не стал.

    Valera_Trefilov
    Слишком яркий текстдрав. Операции у меня не работают, только ввод чисел.
    Текстдрав 4/10.
    Код 0/0.
    Итого 4 балла.

    Yshmeel
    Это работа х_0018.

    spaaaaaaaace
    Где-то выше уже оценивал эту работу.

    DeadLine
    Калькулятор красивый, но операции не работают (выдаёт ERROR при попытке банально сложить числа).
    Текстдрав 8/10.
    Код 0/0.

    Итого 8 баллов

    #Denwer
    Текстдрав не очень аккуратный, нет функции очистки.
    По коду есть немного хардкода, но в целом особых замечаний нет.
    Текстдрав 6/10.
    Код 25/40.
    Итого 31 балл.
    пусто

  8. #7
    Nothing Аватар для Privies
    Регистрация
    25.03.2011
    Адрес
    Рига
    Сообщений
    2,978
    Репутация: 411

    Звание: - очень-очень хороший человек
    Хотелось бы часть С со скриншотиками посмотреть, а не запускать скрипты

  9. #8
    SYSTEM Аватар для Games
    Регистрация
    28.06.2010
    Адрес
    Moscow
    Возраст
    30
    Сообщений
    1,468
    Репутация: 478

    Звание: - луч света в тёмном царстве
    Цитата Сообщение от Privies Посмотреть сообщение
    Хотелось бы часть С со скриншотиками посмотреть, а не запускать скрипты
    Добавил в свой предыдущий пост комментарии по работам от Снувкера.
    Скрины, думаю, тоже сделаем, но, уже завтра)
    пусто

  10. #9
    Активный пользователь Аватар для MAY
    Регистрация
    16.01.2015
    Сообщений
    763
    Репутация: 172

    Звание: - весьма и весьма положительная личность
    поздравляю всех))
    Секреты Копперфильда - кликабельно
    Хотели нажать на ссылку? Но это секрет Копперфильда, не кликабельная ссылка

    "Дайте мне только доступ к средствам массовой информации и я из любого народа сделаю стадо свиней" - Йозеф Геббельс

  11. #10
    Проверенный Аватар для e.kosovskij
    Регистрация
    09.07.2010
    Адрес
    Украина, Харьков
    Сообщений
    3,180
    Репутация: 308

    Звание: как роза среди колючек
    Цитата Сообщение от Privies Посмотреть сообщение
    Хотелось бы часть С со скриншотиками посмотреть, а не запускать скрипты
    Если интересно
    http://pastebin.com/XQKZeguf

Страница 1 из 4 123 ... ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •