Если все статически известно, я бы сказал что-то вроде этого:
char strings[][] = {"One", "One thousand", "One million", /* whatever */};
int map[] = {1, 1000, 1000000};
const char *numbers(const int i)
{
position = search(map, i);// if the array is too small, just linear search
// if it is big, you can binary search
// if there is a relation use a formula
// although a formula is not extendable.
// In this case, it is log(i) in base 1000.
return strings[position];
}
Этот метод может быть расширен для нестатических данных. Вам просто нужно убедиться, что вы правильно заполняете массив strings
и сохраняете сортировку map
.
Примечание. Очевидно, вам следует добавить достаточную проверку ошибок и т. Д. Например, в случае, когда search
не удалось найти i
.