VB新手求教
VB编程进行如下操作:已知大约1000对X、Y、Z的数值,已知X的数值,要求返回3*Y对应的X、Z值,3*Y和Y值的区间相同,但是3*Y的值可能再数值表无对应的Y值,需要...
VB编程进行如下操作:已知大约1000对X、Y、Z的数值,已知X的数值,要求返回3*Y对应的X、Z值,3*Y和Y值的区间相同,但是3*Y的值可能再数值表无对应的Y值,需要用插值法求解,如数值表中Y值有24、27,而3*Y返回值可能是26,请教高手,帮助解决问题再加30分
展开
3个回答
展开全部
你的问题描述很模糊呀。
按一般的理解,你的X、Y、Z 都应该是整数的吧。
这“如数值表中Y值有24、27,而3*Y返回值可能是26”,怎么理解啊?
3*Y应该就是3的倍数,都有24、27了,怎么会取到26呢?
你说的“已知X的数值,要求返回3*Y对应的X、Z值”,
应该是先按X的值,查到它对应的Y值吧?
然后把这个Y乘以3,按这个乘积再在Y值查找,找到后得到对应的X和Z吧?
只是真的无法理解你说的“如数值表中Y值有24、27,而3*Y返回值可能是26”是怎么回事了。
再谈下查表方法吧。你的描述中只说了X、Y的“查找”,如果X和Y的值域不是很大,可以创建一个
“稀疏表”,虽然内存多消耗很多(你可以大概算一下实际需求量,几十、近百个M其实都不算啥),
但可以极速查找。
另外一个比较省资源并且也高效的方法,就是用 Dictionary 对象。
要用两个对象,分别按X值和Y值各创建一个。
这个在一、两W个数据内查找,也是非常快速的。
你的主要问题是,对需求描述不清楚,暂时无法给你具体的实现方案。
按一般的理解,你的X、Y、Z 都应该是整数的吧。
这“如数值表中Y值有24、27,而3*Y返回值可能是26”,怎么理解啊?
3*Y应该就是3的倍数,都有24、27了,怎么会取到26呢?
你说的“已知X的数值,要求返回3*Y对应的X、Z值”,
应该是先按X的值,查到它对应的Y值吧?
然后把这个Y乘以3,按这个乘积再在Y值查找,找到后得到对应的X和Z吧?
只是真的无法理解你说的“如数值表中Y值有24、27,而3*Y返回值可能是26”是怎么回事了。
再谈下查表方法吧。你的描述中只说了X、Y的“查找”,如果X和Y的值域不是很大,可以创建一个
“稀疏表”,虽然内存多消耗很多(你可以大概算一下实际需求量,几十、近百个M其实都不算啥),
但可以极速查找。
另外一个比较省资源并且也高效的方法,就是用 Dictionary 对象。
要用两个对象,分别按X值和Y值各创建一个。
这个在一、两W个数据内查找,也是非常快速的。
你的主要问题是,对需求描述不清楚,暂时无法给你具体的实现方案。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询