我正在制作声音命令计算器..因为我预先存储了一些声音
(1到9),(10,20-90),(百,千,万)。
如果我想计算1234 + 45678
我需要说“”一千二百三十四加上四万五千六百七十八“
我的语音识别系统将其识别为{1,1000,2,100,40,4,} + {40,5,1000,6,100,70,8}
但我不知道如何编写程序来计算上述问题。我希望你理解我的问题并找到一个更好的解决方案..
我已经计划了一个解决方案,但它有一些循环漏洞
在第一个括号中
规则1:将连续数相乘并添加结果,
规则2:如果发现连续组中的第一个数字 10,20,30,40 ... 90.it将连续添加下一个数字 而不是乘以
规则3:它会一直持续到找到之为止 像(+, - *,/)这样的符号,像这样(1 * 1000)+(2 * 100)+(30 + 4)= 1234 类似的第二个括号并添加结果
我对上述程序不满意,请尝试找到更好的解决方案。我将非常感谢你。
如果我的问题不明确,请在评论中留下,我会尽力解释我的水平。
答案 0 :(得分:0)
数字11-13听起来不同但我会假设你在你的"数字"代码。
无论如何,第一次通过每个数组应该产生交替的"数字"和"乘数" 这样
[40, 5, 1000, 6, 100, 70, 8]
变为
[45, 1000, 6, 100, 78]
然后你可以进行乘法和加法。但稍微修改规则,以便测试下一个数字是否可被10整除。如下所示:
int i = 0;
int temp_result = 0;
while(i <= size_of_array){
if(i == size_of_array - 1){
temp_result = temp_result + array[i];
}
else{
if(array[i+1] % 10){
temp_result = temp_result + array[i]*array[i+1];
}else{
temp_result = temp_result + array[i];
}
}
i = i + 2;
}