конвертирование текста в цифры
- Войдите на сайт для отправки комментариев
Втр, 13/12/2016 - 16:08
Здраствуйте, помогите составить скетч.При отправке слова в монитор серийного порта, нужен ответ цифрами. Например, при отправке слова stodvadcatodin, ответ 121, если tristodesat, то 310 и т,д)) слов немного, около десяти, если объясните начало, хотя бы эти две цифры, дальше уже сам доделывать буду))
Если слов немного:
Два массива: в одном строки, в другом соответствующие им числа (либо один массив структур из двух полей).
Перебираете в цикле строки на равенство, если нашли - выводите число из другого массива по тому же индексу.
Если слов много:
массив строк должен быть упорядочен.
Ищете слово бинарным поиском. Дальше - аналогично.
Естественно, желательно обрабатывать ситуацию, когда ничего не найдено.
Не прокатит тут бинарный поиск, так как слова пересекаются. Их нужно по убыванию проверять.
#define DECL_NUMBER(x, v) { x, sizeof(x) - 1, v } struct number_t { const char* word; int length; int value; }; number_t numbers[] = { DECL_NUMBER("tristo", 300), DECL_NUMBER("dvesti", 200), DECL_NUMBER("sto", 100), DECL_NUMBER("tridcat", 30), DECL_NUMBER("dvadcat", 20), DECL_NUMBER("desat", 10), DECL_NUMBER("tri", 3), DECL_NUMBER("dva", 2), DECL_NUMBER("odin", 1) }; inline int read_part(const char** pos) { for (int i = 0; i < sizeof(numbers) / sizeof(number_t); i++) { if (!strncmp(*pos, numbers[i].word, numbers[i].length)) { *pos += numbers[i].length; return numbers[i].value; } } *pos = NULL; return 0; } int read_number(const char* string) { int number = 0; while (string) { number += read_part(&string); } return number; }Тут нашел много полезной инфы насчет массивов)) изучаю
arduino.ru/forum/programmirovanie/dvumernyi-massiv-s-raznymi-tipami-dannykh