PDA

Просмотр полной версии : [Вопрос] Сравнение inputtext с двумерным массивом



limon4eg
27.08.2016, 03:12
Имеется двумерный массив и диалоговое окно с вводом текста.
Игрок вводит текст в диалоговое окно.
Вопрос: как сделать сравнение текста (inputtext) с данными из массива

VVWVV
27.08.2016, 03:40
Все зависит от того, что вы хотите сравнить. Например, при сравнение двух строк вам потребуется функция strcmp. Следует помнить то, что это функция для сравнивания строк, а она, например, не подойдёт для сравнивания строк и числ. Тем не менее, строки можно конвертировать в числа, а числа, соответственно, в строки.

Пример (для чисел):


const SOME_LIMIT = 10;

new inputtext[] = "10";

// Для вещественных чисел требуется изменения тега у обоих элементов.
if (strval(inputtext) == SOME_LIMIT)
{
return true;
}


Пример (для строк):


static const some_string[] = "pro-pawn.ru";
new inputtext[] = "pro-pawn.ru";

if (strcmp(some_string, inputtext) == 0)
{
return true;
}

_lizard
27.08.2016, 12:33
Также при сравнении строк с помощью strcmp() стоит учесть, что функция вернёт 0 (якобы строки "равны"), если хоть одна из сравниваемых строк будет пустая.


static const some_string[] = "pro-pawn.ru";

if(!strlen(inputtext)) return SendClientMessage(playerid, -1, "Введите текст");
if(strcmp(some_string, inputtext) == 0)
{
return true;
}

ziggi
27.08.2016, 21:33
Вы не поняли суть вопроса автора, а именно про: "имеется двумерный массив".
Вот пример:


static
some_messages[][144] = {
"hello world",
"good bye"
};

for (new i; i < sizeof(some_messages); i++) {
if (strcmp(inputtext, some_messages[i], true) == 0) {
// строки одинаковые
}
}

limon4eg
28.08.2016, 18:04
Вы не поняли суть вопроса автора, а именно про: "имеется двумерный массив".
Вот пример:


static
some_messages[][144] = {
"hello world",
"good bye"
};

for (new i; i < sizeof(some_messages); i++) {
if (strcmp(inputtext, some_messages[i], true) == 0) {
// строки одинаковые
}
}

Спасибо! Один человек, который внимательно прочитал запрос юзверя :)