【发布时间】:2023-12-09 07:16:01
【问题描述】:
这就是问题所在。我正在尝试编写一个类似于所有计算机中的计算器。它应该从一个 EditBox 中获取值,进行所有需要的计算,然后在另一个 EditBox 中显示。例如:3*6/2;结果:9; 我已经做到了:
double rezultatas = 0;
double temp = 0;
// TODO: Add your control notification handler code here
UpdateData(TRUE);
for (int i = 0; i < seka_d.GetLength(); i++)
{
if (seka_d[i] == '/' || seka_d[i] == '*')
{
if (seka_d[i] == '*')
{
temp = (seka_d[i - 1] - '0') * (seka_d[i + 1] - '0');
}
if (seka_d[i] == '/')
{
temp = (seka_d[i - 1] - '0') / (seka_d[i + 1] - '0');
}
//temp = (seka_d[i - 1] - '0') / (seka_d[i + 1] - '0');
}
if (seka_d[i] == '+' || seka_d[i] == '-')
{
if (seka_d[i] == '-')
{
temp = (seka_d[i - 1] - '0') - (seka_d[i + 1] - '0');
}
if (seka_d[i] == '+')
{
temp = (seka_d[i - 1] - '0') + (seka_d[i + 1] - '0');
}
//temp = (seka_d[i - 1] - '0') + (seka_d[i + 1] - '0');
}
if (seka_d[i] == '-')
{
temp = (seka_d[i - 1] - '0') - (seka_d[i + 1] - '0');
}
//rezultatas++;
}
result_d = temp;
UpdateData(FALSE);
它会检查字符串 seka_d 中的任何符号,例如“*”、“-”、“/”、“+”,并使用两个相邻符号(例如 1+2,总和 1 和 2)进行操作(我知道它还不能与多个操作一起正常工作),但现在我还必须使用双精度操作,所以我想知道是否可以将字符串的一部分转换为整数或双精度(例如 0.555+1.766)。想法是从开始到符号(从开始到'+')和从符号到字符串结尾或另一个符号(例如,如果字符串是 0.555+1.766-3.445 它将从'+' 直到 '-')。这种方式可以吗?
【问题讨论】:
-
这个问题与MFC技术无关,所以我去掉了那个标签,并添加了另一个更适合这个问题的标签。
标签: c++ calculator tokenize