Сравнение одного массива с несколькими.
- Войдите на сайт для отправки комментариев
Сб, 04/09/2021 - 18:00
Добрый день, пишу с телефона пока не могу скинуть пример.
Подскажите пожалуйста! Получаю набор символов с ps2 клавиатуры, сохраняю их в массив, необходимо выполнить событие при совпадении элементов введеных и одним из сохраненых массивов, среди сохраненых массивов элементы могут повторяться а некоторые массивы отличаются только лишь одним элементом. Размер массивов тоже разный. Еще одна сложность в том что нет конкретного элемента заканчивающего введение с клавиатуры.
А как вы тогда определяете, что набор массива закончен? Ввод с клавиатуры обычно заканчивается байтами перевода каретки 0х0D 0x0A
По какому совпадению? Если по полному, то memcmp().
И какой в этом смысл?
Подскажите пожалуйста! Получаю набор символов с ps2 клавиатуры,
Клавиатура не выдает набор символов, она выдает набор скан-кодов.
сохраняю их в массив, необходимо выполнить событие при совпадении элементов введеных и одним из сохраненых массивов, среди сохраненых массивов элементы могут повторяться а некоторые массивы отличаются только лишь одним элементом. Размер массивов тоже разный. Еще одна сложность в том что нет конкретного элемента заканчивающего введение с клавиатуры.
Принято к сведению.
Когда появятся вопросы - задавайте (желательно по принятой на этом форуме форме).
Но так не правильно, если допустим последний символ и размер ответа совпадает то выберет ближайшее условие.
Лично мне не стало понятней что такое "сравнить массивы". И ещё добавилось непонимание того, что вы считаете "правильным" выбором массива.
Начните с человеческого языка и таки сформулируйте - что в вашем воображении является сравнением массивов.
Сравнение [i] элемента одного массива с [i] элементом другого массива.
Понятно, что неправильно.
Непонятно - чего Вы хотите.
Не берите во внимание клавиатуру. У меня есть массив размером 40, есть переменная счетчик равная 10, это то есть массив от 0го адреса до 9го заполнен цифрами, и есть еще 3 массива разного размера содержащие какие то цифры, нужно определить соответствуют ли 10 цифр массива размером 40, какому нибудь из этих 3х массивов или не соответствуют.
Не берите во внимание клавиатуру. У меня есть массив размером 40, есть переменная счетчик равная 10, это то есть массив от 0го адреса до 9го заполнен цифрами, и есть еще 3 массива разного размера содержащие какие то цифры, нужно определить соответствуют ли 10 цифр массива размером 40, какому нибудь из этих 3х массивов или не соответствуют.
1. Совершенно непонятно, как соотносится длина массива 40 с тем фактом, что в нем содержатся 10 элементов. Если массив заполнен не полностью, и нас интересует лишь заполненная часть, совершенно не важно, какую длину имеет массив. Другими словами, непонятно, что именно Вам нужно.
2. Поясните, что Вы подразумеваете под словом "соответствует".
приведи реальные данные и ожидаемое поведение
Это важно! В нашем деле мелочей нет. (... и корову пусть зовут - Зорька) ;))
(для тех, у кого иные "калчерал рефереснес", это реминисценция к фильму "День выборов")
, нужно определить соответствуют ли 10 цифр массива размером 40, какому нибудь из этих 3х массивов или не соответствуют.
После прочтения и созерцания за окном..., наверное так : МАШАТЫПЕТЯАЯВАСЯКТОПРАВ
надо ответить есть ли в сообщении МАША или ПЕТЯ или ВАСЯ ?
Мда, у меня сейчас азарт, не сделать то что мне нужно, а объяснить на форуме что мне нужно.
Есть операционный буфер, массив morze[40], массив в который с 0го адреса по порядку записываются целые числа по нажатию клавиатуры, допустим получили: morze[] = {1, 5, 13, 8, 7, 0, 0, ...}, так же есть несколько задекларированных глобальных массива целых чисел, со своими размерами, и набором чисел(Ответы) допустим: int otvet1[4] = {1, 5, 13, 2}, int otvet2[5] = {9, 5, 13, 8, 7}, int otver3[5] = {1, 5, 13, 8, 7}. так же есть (переменная razmer) счетчик нажатий или количество цифр записанных в массив (morze[]) с 0го адреса.
Теперь вопрос: каким образом сделать проверку соответствия части массива morze[] (с 0го адреса до morze[razmer]), с массивами (Ответами)?
memcmp(...)
Primnet, нафига столько болтовни, задача аналогична поиску слова в строке, как написал lilik в #13
Азарт тут не причём.
Массивы можно сравнивать как точные последовательности элементов, фрагменты, множества, прямо, реверсно и ещё черте как. Какой у вас в голове способ - никому неизвестно. Поэтому тут так всегда - сначала по-человечески и однозначно формулируете, а потом получаете совет.
И так и не объяснил.
Кто скажет, какой из ответов верен, а какой нет.
morze = {1, 2, 3, 4}
otvet1 = {1, 2, 3, 4}
otvet2 = {1, 2, 3, 4, 5}
otvet4 = {5, 1, 2, 3, 4}
otvet5 = {1, 2, 3}
otvet6 = {2, 3, 4}
Как я понял должен быть выбран массив otvet[]:
1. Количество элементов которого равно значению переменной razmer;
2. И каждый элемент которого равен соответствующему (с тем же индексом) элементу массива morze[];
Т.е. в примере rkit ответ только один otvet1 = {1, 2, 3, 4}