早教吧作业答案频道 -->其他-->
用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#控制台写多项式四则运算!...的网友还看了以下:
若自然数n使得三个数的加法运算“n+(n+1)+(n+2)”产生进位现象.若自然数n使得三个数的加 2020-05-16 …
甲种农药每千克兑水20千克,乙种农药每千克兑水40千克,现为了提高药效,根据专家意见,甲乙两种农药 2020-06-04 …
这样算仿写作文吗我放行周国平的《面对苦难》写了《面对失败》结构,写法一样,但表现主题有些不同,也就 2020-06-07 …
求编程:算数表达式求值以字符序列的形式从终端输入语法正确的,不含变量的整数表达式,利用给定的算符优 2020-07-10 …
小红和小花在玩一种计算的游戏,计算的规则是.abcd.=ad-bc.现在轮到小红计算.1234.的 2020-07-13 …
财政总预算会计核算进行会计分期的目的是()。A.为了贯彻权责发生制原则B.为了贯彻配比原则C.为了贯 2020-11-06 …
黑板上现写有数2、3,根据规则写出一个新数,其规则是:设黑板上的数为a,b,新数为a*b+a+b.如 2020-11-08 …
若有关自然数n的加法运算:n+(n+1)+(n+2)产生进位现象,则称n为“连加进位...若有关自然 2020-11-20 …
角的计算22度25分乘以4得?45度26分+38度14分=多少度?180度-78度26分=?度公式: 2020-12-19 …
请问怎么用JS写一个四则运算设计一个JS脚本,在页面中实现四则运算的功能(仅要求简单的单步四则运算, 2020-12-28 …