我使用4位7段显示器来显示数字。我有一些功能在7段显示一些字母/数字,如:
zero() // displays 0 on the 7-segment.
one() // displays 1 on the 7-segment.
two() // displays 2 on the 7-segment.
...
现在,我在7段显示屏上显示了一个数字(例如1435)。我目前的算法如下:
从数字1435中提取个别数字(将数字分开为1,4,3,5)。 SDS
要显示这些个别数字,请使用' ten' if-else条件如下:
因此,要打印的此实现(对于数字1435)将运行多个if-else检查。
问题2 :这个实现是低效的,因为当我需要增加/减少该数字时(1435到1436然后到1437等等),if-else检查的数量也是改变了所以数字的变化不顺利。这意味着,作为' 0' 0是if-else检查中的第一个,因此可以快速显示。另一方面' 9'是if-else检查中的最后一个,因此它必须在显示之前进行十次检查。这使得实现速度慢得多,因为要显示的数字从0增加到9.如何实现解决这两个问题?
提前致谢。
答案 0 :(得分:3)
您可以使用指向表中函数的指针:
typedef void (*func)(); // type for functions
func functions[] = { zero, one, two, three, ... }
functions[3](); // example, will call three()
您必须提取所需的数字并将其用作表格中的索引....