Как сравнить более одной строки в операторе if в C? - PullRequest
0 голосов
/ 12 октября 2019

На языке C я создал программу с виртуальным ботом, чтобы при запуске программа представилась, и я дал ей имя Nick. Когда пользователь запускает программу, он запрашивает имя пользователя, и я хочу написать код, который, если имя пользователя похоже на имена: Nick, Nicko, Nic, Nik или с заглавными буквами: NICK, Nicko. Nic и т. Д. Программа будет приветствовать пользователя, например: «Ух! У меня такое же имя ...», но когда пользователь вводит другое имя, не похожее на Ника, программа приветствует его как «Hello (имя пользователя)». .. ". Не могли бы вы мне помочь? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 12 октября 2019

Другие предложили таблицы псевдонимов, но это немного громоздко, если вы планируете обрабатывать произвольное количество пользователей. Обработка верхнего и нижнего регистра относительно проста;когда вы сохраняете то, что набрал человек, сохраняйте копию всего этого в одном случае, чтобы использовать его для сравнения. Таким образом, ваша программа может обращаться с ними так, как они делали вначале. Вместо таблицы ваша программа может кодировать ряд правил замещения, которые она может принять в строке: т.е. для y;n для nn и суффиксы, которые можно игнорировать.

В зависимости от количества правил, вы можете рассмотреть упорядочение правил как функцию нормализации, которую вы применяете универсально - так, например, замените все то есть на y, удалитевсе игнорируемые суффиксы и т. д. - в вашей сохраненной копии строки;примените ту же функцию нормализации к входу, а затем просто сравните их, а не необработанные.

Конечно, здесь есть проблемы, в которых вы не захотите применять большинство правил в начале имени. и некоторые были бы уместны, только если они были применены к мягкому гласному, а не к жесткому гласному;который вводит алгоритм soundex, который переводит слова в их фонетический эквивалент, так что «наука» и «сцена» становятся дальше друг от друга, чем может предполагать их расстояние редактирования. К этому моменту вы в значительной степени внедрили корректор орфографии.

Ваша формулировка проблемы обманчиво проста;в этой области было проведено много исследований, и все же полезные помощники при наборе текста - далеко не все.

0 голосов
/ 12 октября 2019

Вы можете создать массив cstrigns (что-то вроде char dictionary[size][size]) и заполнить его словами, с которыми вы хотите проверить. Затем выполните итерацию по нему, проверяя, соответствует ли ввод текущей строке.

...