来看看这种需求该怎么设计程序!!!

zswzwy 2015-08-19 10:58:54
有10个条件,每个条件有5个不同的值,根据条件组合的结果调用不同的模块,例如:

条件1:A B C D E
条件2:1 2 3 4 5
...

最简单的调用:
if(条件1==A && 条件2==1.......)
调用模块1
if(条件1==A && 条件2==2.......)
调用模块2
...........


但是这样会写出上万个if,请高人指定有没有其它的方法。
...全文
240 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
cs1438250 2015-08-26
  • 打赏
  • 举报
回复
引用 15 楼 worldy 的回复:
[quote=引用 14 楼 cs1438250 的回复:] 这么多组合,意味着你得有那么多要执行的模块。。写的过来么。
可以慢慢写嘛,lz写不完,可以儿子来写,然后孙子..... 总有写完的一天吧[/quote] 愚公移码
hbs_biscuit 2015-08-25
  • 打赏
  • 举报
回复
你现在有 这么多模块吗 ,这么多模块 是人工写出来还是自动生成的呢 如果是 自动生成 的 ,那么就一定能找到一个算法,将这些模块整合成较少的一个和几个模块。 我感觉
worldy 2015-08-25
  • 打赏
  • 举报
回复
引用 14 楼 cs1438250 的回复:
这么多组合,意味着你得有那么多要执行的模块。。写的过来么。
可以慢慢写嘛,lz写不完,可以儿子来写,然后孙子..... 总有写完的一天吧
cs1438250 2015-08-25
  • 打赏
  • 举报
回复
这么多组合,意味着你得有那么多要执行的模块。。写的过来么。
zswzwy 2015-08-19
  • 打赏
  • 举报
回复
难道没有什么新发明的设计模式可以解决么
yaozhiyong110 2015-08-19
  • 打赏
  • 举报
回复
或者按你的举例 将模块可能被调用的情况按条件进行字符编码 比方说 模块1有2种情况要调用 分别是 A1 和 B5 这样只要把你的条件按字符连接起来 比较每个模块的字符串(每个模块可能有多个)就能确定这个情况要调用哪个模块了
worldy 2015-08-19
  • 打赏
  • 举报
回复
没有捷径,任何事情总是有代价的
zswzwy 2015-08-19
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
没多大,10K*4你就可以建立10000个函数了
我现在用的就是类似这样的方法,但是感觉建这个表的工作量也很大
yaozhiyong110 2015-08-19
  • 打赏
  • 举报
回复
引用 2 楼 zswzwy 的回复:
[quote=引用 1 楼 worldy 的回复:] 建立一个表,将条件1的abcde转换为01234 将条件2的12345转换为01234 建立一个二维数组 a b c d e 1 函数a1 函数b1 函数c1 ............................. 2 3 ......................... 4 5 通过条件值做下标,直接访问二维表单元
这样的话,这个表也是巨大的[/quote] 那只有对条件的存放进行压缩了 到时再解压 话说既然你的条件就是巨大的(就有1亿种可能分别调用1亿种模块) 你不压缩 什么方法都没用...
worldy 2015-08-19
  • 打赏
  • 举报
回复
没多大,10K*4你就可以建立10000个函数了
zswzwy 2015-08-19
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
建立一个表,将条件1的abcde转换为01234 将条件2的12345转换为01234 建立一个二维数组 a b c d e 1 函数a1 函数b1 函数c1 ............................. 2 3 ......................... 4 5 通过条件值做下标,直接访问二维表单元
这样的话,这个表也是巨大的
worldy 2015-08-19
  • 打赏
  • 举报
回复
建立一个表,将条件1的abcde转换为01234 将条件2的12345转换为01234 建立一个二维数组 a b c d e 1 函数a1 函数b1 函数c1 ............................. 2 3 ......................... 4 5 通过条件值做下标,直接访问二维表单元
木黑神 2015-08-19
  • 打赏
  • 举报
回复
放在单独的 .cpp 文件中
赵4老师 2015-08-19
  • 打赏
  • 举报
回复
10位5进制数转为最多5的10次方即9765625个函数指针。 在32位系统上需要9765625*4=39062500个字节≈40MB
mayudong1 2015-08-19
  • 打赏
  • 举报
回复
5的10次方种组合 所有问题肯定出在更早的时候
kenshu 2015-08-19
  • 打赏
  • 举报
回复
楼主初中的排列级合都不过关, 不是上万个IF ,而是 5^10 = 9765625个不同的组合。 你觉得有什么捷径?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧