[问题] swith_case 用法

楼主: totemist (totem)   2015-06-02 15:36:47
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Code::Block
写C
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
matlab的fdatool
问题(Question):
因为我接下来要做的是有45个case
自己用2个case来做是成功的
我想知道该何做能更简洁
喂入的资料(Input):
input是相同的512笔data
经由case去选择不同的处理方式
预期的正确结果(Expected Output):
目前测试是正确的 没有错误
只是想要知道有没有更好的方法
错误结果(Wrong Output):
目前测试是正确的 没有错误
只是想要知道有没有更好的方法
程式码(Code):(请善用置底文网页, 记得排版)
void A (void);
void D (void);
char c;
printf("enter A=120_480 or D=180_480 = ");
scanf ("%c", &c);
switch (c)
{
case 'A':
break;
case 'D':
break;
defult break;
}
补充说明(Supplement):
因为我是要做滤波器(fir filter - bandpass)
我希望能给使用者自己选择频率(0~540hz,每60hz为一单位)
所以我总共要做C10取2 有45个case要做
这里再补充一下:
因为选择的范围可以是
0~60, 0~120, 0~180, .... ,0~540
60~120, 60~180, 60~240, ... ,60~540
...
...
420~480, 420~540
480~540
而每一个范围经由matlab的fdatool都会产生一个fdacoefs.h
而每一个.h档里面会有一个阵列
我目前作法就是把 matlab的fdatool所产生的45个fdacoefs.h合并为一个.h档
然后在使用者接口直接写死
ex:
printf("enter A=120_480 or D=180_480 = ");
就是直接给使用者看着指令选择
但是我想做到的是给使用者自动输入想要的频宽
只是觉得这样对使用者比较方便,不用把我45个代号看完就可以自动输入这样
这样的作法会比较省时间和空间吗?
另外对于我上述想做的方式,我该找什么资料参考呢?
谢谢
作者: Feis (永远睡不着 @@)   2015-06-02 16:21:00
C or C++ ?. 不过其实应该好好想想真的有 45 cases 吗先退一万步来想, 你 fdacoefs.h 里面是只有阵列吗?如果是的话, 你怎么将 45 个阵列合并?然后最后再想想你可以把这个选择问题变成一个索引对照问题吗
作者: Frozenmouse (*冰之鼠*)   2015-06-02 18:36:00
所以输入会转变两个频率,A=100,200、D=500,600我有理解错吗?@@
作者: Feis (永远睡不着 @@)   2015-06-02 21:54:00
我的意思是要你把它变成一个类似二维阵列, 用频率去索引更实际的做法其实应该是自己算 coef, 不过我想就算了
作者: jackylu63 (J)   2015-06-03 01:03:00
这个问,听起来建一个表就可以了
作者: Frozenmouse (*冰之鼠*)   2015-06-03 08:06:00
所以跟我之前想的应该差不多,只是我没表达清楚 Orz你可以考虑把coefs弄成三维表格,概念上以两个频率为前两个维度,第三维就是系数输入也让使用者直接给频率就好,非60倍数再处理啊,其实就是tropical72大说的方法…XD
作者: WYchuang (爱赖床的黄金猎犬)   2015-06-03 09:50:00
现在我遇到这种的都会想搞个xml档案 有人跟我一样吗 xD
作者: MOONRAKER (㊣牛鹤鳗毛人)   2015-06-03 11:10:00
并不会

Links booklink

Contact Us: admin [ a t ] ucptt.com