Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 14
  1. #1
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±

    Поиск значения в элементах массива

    Приветствую уважаемые пользователи Pro - Pawn!
    Описание:
    Ищет значение в элементах массива

    Параметры:
    array - Массив в котором ищем значение.
    search_value - Значение которое хотим найти в массиве.
    array_size - Размер массива (Вычисляется оператором sizeof, дополнительных манипуляций не требуется)

    Возвращаемое значение:
    Функция возвращает элемент массива в котором найдено значение, иначе -1
    PHP код:
    SearchValueInElemetsArray(array[], search_valuearray_size sizeof(array))
    {
        
    // Создадим цикл for с условиями что, пока n < размера массива, то n будет прибавляться
        
    for (new 0array_size; ++n)
        
    // Если элемент массива с n'ой итерацей равен значению которое ищем в элементах массива, вернем элемент массива в котором находиться данное значение.
            
    if (array[n] == search_value
                return 
    n// Описано выше
        
    return - 1// Вернем - 1 функцие, дабы знать, что значение в элементах массива не найдено.

    Пример использования:
    PHP код:
    new value_array[] = { 8162430364238566470 }; // Массив с целыми числами. 
    PHP код:
    main()
    {
        
    // Переменная куда запищеться результат функций (Либо элемент в котором найдено значение, иначе - 1)
        
    new result
            
    search_number 36// Значение которое ищем в массиве
        
    result SearchValueInElemetsArray(value_arraysearch_number); // Запишем результат выполнение функций
        
    if(result != - 1// Если не равно "-1", то функция нашла значение в элементах массива
            
    printf("Значения найдено в элементе %d"result); // Выведем найденое значение на экран
        
    else print("Значение не найдено!"); // Если значение не найдено, то выведем сообщение на экран.

    P.S: Не советуется использовать для больших массивов, т.к такой метод для них не эффективен!
    Автор: Bublik_Public
    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено.
    Последний раз редактировалось $continue$; 23.07.2015 в 19:19.

  2. 3 пользователя(ей) сказали cпасибо:
    Desulaid (23.07.2015) Outsider (24.12.2017) Snoop_Dog (23.07.2015)
  3. #2
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    а разве значение в массиве не может быть отрицательным?

  4. #3
    Аватар для NewGreen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    Цитата Сообщение от MR_BEN Посмотреть сообщение
    а разве значение в массиве не может быть отрицательным?
    Она возвращает не значение, а индекс значения в массиве.
    Значение в самом массиве может быть любым.
    Опасность здесь в том, что, в Pawn массивы начинаются с 0 до n-1 (так называемый способ «индекс с началом с нуля»), поэтому если пренебречь проверкой на -1 при выполнении функции, может произойти ошибка времени выполнения скрипта в процессе работы вирт. машины Pawn, с сообщением: Run time error 4: "Array index out of bounds"
    Последний раз редактировалось NewGreen; 23.07.2015 в 14:41.

  5. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Ищет значения в элементах массива
    Значения?

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    search_value - Значение которое хотим найти в массиве.
    Парой строк выше вы писали, что функция ищет "значения", т.е. их подразумевалось несколько. Что-то здесь не стыкуется.

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    дополнительных манипуляций не требуется
    Каких ещё манипуляций?

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Функция возвращает элемент массива в котором найдено значение, иначе - 1
    "Иначе возвращает 1"? И да, элемент - это ячейка массива. Вернуть можно либо её номер, либо хранящееся в ней значение. Что именно возвращает ваша функция?

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Код:
    Если не равно "-1", то функция нашла значение в элементах массива
    Определитесь уже, 1 или -1.

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Код:
    элемент массива с n'ой итерацей
    "Элемент массива с итерацией"?

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    PHP код:
    result SearchValueInElemetsArray(value_arraysearch_number); // Запишем результат выполнение функций 
    "Функций"? Я вижу тут только одну...

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Не советуется
    Функция с кем-то должна советоваться?
    Обычно, когда нужно проинформировать о чём-то нежелательном, говорят "не рекомендуется".

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    функцие
    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    запищеться
    И всё это вкупе с названиями на кривом английском. Честно, не знаю даже, что и сказать...

    Хотя нет, знаю. Один совет: в следующий раз, когда будете что-то выкладывать, дайте проверить свой текст кому-нибудь, кто более-менее знает правила орфографии и пунктуации.
    Ну несерьёзно это, публиковать статью, в которой ошибок больше, чем самих слов.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. #5
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Значения?


    Парой строк выше вы писали, что функция ищет "значения", т.е. их подразумевалось несколько. Что-то здесь не стыкуется.


    Каких ещё манипуляций?


    "Иначе возвращает 1"? И да, элемент - это ячейка массива. Вернуть можно либо её номер, либо хранящееся в ней значение. Что именно возвращает ваша функция?


    Определитесь уже, 1 или -1.


    "Элемент массива с итерацией"?
    Элемент массива с nой итерацией, что означает что цикл пройдется по всему массиву.
    -1 возвращает, это по-момему явно, не? (Если в элементах массива, не найдено число, которое хотим найти.)
    Возвращает элемент массива где хранится, искаемое число

  7. #6
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Элемент массива с nой итерацией, что означает что цикл пройдется по всему массиву.
    У элементов массива есть индекс. Понятие "итерация" применимо к циклам, но никак не к массивам.

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    -1 возвращает, это по-момему явно, не?
    Я-то понимаю, но поймут ли другие, кого вы запутаете своим описанием?
    И в чём вообще смысл отделять "-" и "1" пробелом? От этого текст должен выглядеть как-то красивее, или что-то ещё?

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Возвращает элемент массива где хранится, искаемое число
    Опять вы "элемент". Индекс элемента или его значение?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. #7
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    У элементов массива есть индекс. Понятие "итерация" применимо к циклам, но никак не к массивам.
    А ничего, что цикл есть в функции, Вы не думали что это как раз и применяться к циклу. Цикл сканирует элементы массива, то есть nая итерация, это означает что a[0], оно же может быть и a[10], по-любому, оно не известно программе в каком элементе лежит значение.
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Опять вы "элемент". Индекс элемента или его значение?
    Что, простите? Возвращает элемент в котором лежит значение, переданное функции.
    То есть, например:
    PHP код:
    a[10] = 36// Где: a  - массив, 10 - элемент массива, не? 
    Отойдем от Pawn не много:
    В С++, sizeof - возвращает не количество элементов, а байты. Что бы, получить количество элементов нужно сделать следующие:
    PHP код:
    sizeof(array) / sizeof(array[0]) // это приемлемо только для char и стринговых значении. В итоге мы получим количество элементов в массиве. 
    Последний раз редактировалось $continue$; 23.07.2015 в 19:27.

  9. #8
    Аватар для NewGreen
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.09.2014
    Сообщений
    61
    Репутация:
    44 ±
    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    А ничего, что цикл есть в функции, Вы не думали что это как раз и применяться к циклу. Цикл сканирует элементы массива, то есть nая итерация, это означает что a[0], оно же может быть и a[10], по-любому, оно не известно программе в каком элементе лежит значение.
    Что, простите? Возвращает элемент в котором лежит значение, переданное функции.
    То есть, например:
    PHP код:
    a[10] = 36// Где: a  - массив, 10 - элемент массива, не? 
    "a[0],a[10]" - это два элемента/значения массива,
    "0, 10" - это два индекса массива,
    "Итерация" - это один шаг цикла, термин применяется только к циклам (в рамках программирования), в области видимости цикла.
    PHP код:
    ...
    new 
    a[10];
    for(new 
    010i++) 
    // Начало области видимости цикла
        
    printf("Элемент массива- %d, индекс массива - %d",a[i],i); // Функция будет вызвана 10 раз, т.е. циклом будет совершено 10 шагов/итераций
    // Конец области видимости цикла
    ... 
    При выполнении пример выше выведет 10 строк, каждая строка - это одна итерация.

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Отойдем от Pawn не много:
    В С++, sizeof - возвращает не количество элементов, а байты. Что бы, получить количество элементов нужно сделать следующие:
    PHP код:
    sizeof(array) / sizeof(array[0]) // это приемлемо только для char и стринговых значении. В итоге мы получим количество элементов в массиве. 
    Что Вы хотели этим сказать ?!

  10. #9
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    А ничего, что цикл есть в функции, Вы не думали что это как раз и применяться к циклу. Цикл сканирует элементы массива, то есть nая итерация, это означает что a[0], оно же может быть и a[10], по-любому, оно не известно программе в каком элементе лежит значение.
    Ок, посмотрим ещё раз:
    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Код:
    Если элемент массива с n'ой итерацей равен значению которое ищем в элементах массива, вернем элемент массива в котором находиться данное значение.
    По всем правилам русского языка, слова "итерацией" здесь относится к словосочетанию "элемент массива". Слова "цикл" в предложении нет.
    Очевидное решение: просто выражайтесь правильно, здесь нет телепатов, чтобы угадывать, что вы имели в виду на самом деле.
    Ещё раз, итерации - к циклам, индексы - к массивам. Не скрещивайте тапки с тараканами.

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Что, простите? Возвращает элемент в котором лежит значение, переданное функции.
    Элемент - это понятие абстрактное. Это составляющая структуры данных, своего рода контейнер, содержащий значение и имеющий идентификатор (в массиве этим идентификатором является индекс). Ваша же функция возвращает число - индекс элемента в массиве.
    Ну хорошо, если, с ваших слов, "функция возвращает элемент массива", как вы представляете, чтобы функция возвращала весь контейнер? Она должна возвращать сразу 2 значения (индекс и значение, хранящееся в элементе) или указатель на элемент?

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    Отойдем от Pawn не много:
    В С++, sizeof - возвращает не количество элементов, а байты. Что бы, получить количество элементов нужно сделать следующие:
    PHP код:
    sizeof(array) / sizeof(array[0]) // это приемлемо только для char и стринговых значении. В итоге мы получим количество элементов в массиве. 
    И что вы хотите этим сказать?

    Цитата Сообщение от Bublik_Public Посмотреть сообщение
    PHP код:
    a[10] = 36// Где: a  - массив, 10 - элемент массива, не? 
    a[10] - элемент массива a.
    10 - индекс элемента, 36 - его значение после присваивания.
    Выучите термины, а потом уже беритесь что-то доказывать.
    Вот несколько полезных ссылок:
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  11. #10
    Аватар для MR_BEN
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.01.2014
    Сообщений
    110
    Репутация:
    29 ±
    Функция возвращает не элемент массива, а его индекс

 

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

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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