早教吧作业答案频道 -->其他-->
用c#控制台写多项式四则运算!例如实现:33-4+3333333*444/333+33..这样的运算!
题目详情
用c#控制台写多项式四则运算!
例如实现:33-4+3333333*444/333+33..这样的运算!
例如实现:33-4+3333333*444/333+33..这样的运算!
▼优质解答
答案和解析
///
/// 分解字符串中括号左、中、右部分
///
/// 所要分析的字符串
/// 输出左边
/// 输出中间
/// 输出右边
private static void Bracket(string AText,
out string ALStr, out string ACStr, out string ARStr)
{
int L = 0, R = 0; // 出现的括号,判断匹配用
ALStr = ACStr = ARStr = "";
for (int i = 0; i < AText.Length; i++)
{
if (AText[i] == '(') L++;
else if (AText[i] == ')') R++;
if (L == 0) ALStr += AText[i];
else if (L > R) ACStr += AText[i];
else
{
ARStr = AText.Substring(i + 1);
break;
}
}
if (ACStr.Length >= 1) ACStr = ACStr.Remove(0, 1);
}
private static string fCalc(string AText)
{
if (AText.IndexOf('(') >= 0)
{
string L, C, R;
Bracket(AText, out L, out C, out R);
return fCalc(L + fCalc(C) + R);
}
else if ((AText.IndexOf('+') >= 0) || (AText.IndexOf('-') >= 0))
{
int i = AText.IndexOf('+');
int j = AText.IndexOf('-');
if (i < 0) i = AText.Length - 1;
if (j < 0) j = AText.Length - 1;
int K = Math.Min(i, j);
string L = AText.Substring(0, K);
string R = AText.Substring(K + 1);
if (L.Length = 0))
{
int i = AText.IndexOf('*');
int j = AText.IndexOf('/');
if (i < 0) i = AText.Length - 1;
if (j < 0) j = AText.Length - 1;
int K = Math.Min(i, j);
string L = AText.Substring(0, K);
string R = AText.Substring(K + 1);
if (L.Length 0) && ("*/".IndexOf(AText[i - 1]) >= 0)))
vText += "_";
else if (((i > 0) && ("+-".IndexOf(AText[i - 1]) >= 0)) ||
((i + 1 < L) && ("+-()".IndexOf(AText[i + 1]) < 0)))
vText += "+_";
else vText += AText[i];
}
else vText += AText[i];
}
#endregion 处理负号
return fCalc(vText);
}
/// 分解字符串中括号左、中、右部分
///
/// 所要分析的字符串
/// 输出左边
/// 输出中间
/// 输出右边
private static void Bracket(string AText,
out string ALStr, out string ACStr, out string ARStr)
{
int L = 0, R = 0; // 出现的括号,判断匹配用
ALStr = ACStr = ARStr = "";
for (int i = 0; i < AText.Length; i++)
{
if (AText[i] == '(') L++;
else if (AText[i] == ')') R++;
if (L == 0) ALStr += AText[i];
else if (L > R) ACStr += AText[i];
else
{
ARStr = AText.Substring(i + 1);
break;
}
}
if (ACStr.Length >= 1) ACStr = ACStr.Remove(0, 1);
}
private static string fCalc(string AText)
{
if (AText.IndexOf('(') >= 0)
{
string L, C, R;
Bracket(AText, out L, out C, out R);
return fCalc(L + fCalc(C) + R);
}
else if ((AText.IndexOf('+') >= 0) || (AText.IndexOf('-') >= 0))
{
int i = AText.IndexOf('+');
int j = AText.IndexOf('-');
if (i < 0) i = AText.Length - 1;
if (j < 0) j = AText.Length - 1;
int K = Math.Min(i, j);
string L = AText.Substring(0, K);
string R = AText.Substring(K + 1);
if (L.Length = 0))
{
int i = AText.IndexOf('*');
int j = AText.IndexOf('/');
if (i < 0) i = AText.Length - 1;
if (j < 0) j = AText.Length - 1;
int K = Math.Min(i, j);
string L = AText.Substring(0, K);
string R = AText.Substring(K + 1);
if (L.Length 0) && ("*/".IndexOf(AText[i - 1]) >= 0)))
vText += "_";
else if (((i > 0) && ("+-".IndexOf(AText[i - 1]) >= 0)) ||
((i + 1 < L) && ("+-()".IndexOf(AText[i + 1]) < 0)))
vText += "+_";
else vText += AText[i];
}
else vText += AText[i];
}
#endregion 处理负号
return fCalc(vText);
}
看了用c#控制台写多项式四则运算!...的网友还看了以下:
加百分之多少降百分之多少怎么算1,比如:55228降百分制82,比如:33.41上百分之8怎么算, 2020-05-14 …
有趣的“约分”“约去”指数:如33+1333+23=3+13+2,53+2353+33=5+25+ 2020-06-16 …
CAXA数控车怎样画公式曲线CAXA 数控车和CAXA制造工程师的公式曲线画法怎么不一样啊?CAX 2020-06-27 …
估算要用四舍五入的方法吗?比如33*987是这样估算30*990呢还是30*1000呢? 2020-06-27 …
请问你个关于不锈钢规格的问题!SIZES1,1/4,11/2,2,34,6INCHESSIZES1 2020-07-09 …
用简单的方法证明一组检测数据是否稳定?比如这样一组数据:4.94.14.44.44.34.44.4 2020-07-26 …
彩票概率问题比如33选6的彩票,在某一期,我买02,04,13,18,21,29这六个号和我买01 2020-07-30 …
“约去”指数:如33+1333+23=3+13+2,53+2353+33=5+25+3,…你见过这样 2020-11-03 …
以ve结尾的把ve变为f的单词,有。如果是两位数的基数词例如33,变序数词。以ve结尾的把ve变为f 2020-11-06 …
程控放大器中的程控如何解释?各位高手请问程控放大器中的程控如何解释?它是过程控制的缩写或者是程序控制 2020-12-05 …