using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication2
{
class Program
{
static bool flag = true;
static string lastNumber = "";
static string Number = "";
static char Fuhao;
static int h;
static int k;
static void Main(string[] args)
{
//DataTable dt = new DataTable();
//Console.WriteLine(dt.Compute("3+3*8-6", ""));
//Console.Read();
string str = "125+568-567*95/81-6/958";
Console.WriteLine(show(str));
Console.Read();
}
static string show(string str)
{
for (int i = 0; i < str.Length; i++)
{
if (str[i] == '*')
{
for (int j = i-1; j >= 0; j--)
{
if (char.IsNumber(str[j]) || str[j] == '.')
{
lastNumber = str[j]+lastNumber ;
}
else if (str[j] == '+' || str[j] == '-' || str[j] == '*' || str[j] == '/')
{
h = j+1;
j = -1;
}
}
for (int j = i +1; j < str.Length+1; j++)
{
//要添加一位否则若最后一位是连乘检测不了
if (j<str.Length&&(char.IsNumber(str[j])|| str[j]=='.'))
{
Number = Number + str[j];
}
if ((j < str.Length && (str[j] == '+'||str[j]=='-'||str[j]=='*'||str[j]=='/'))||j==str.Length)
{
k = j-1;
j = str.Length;
}
}
double m = Convert.ToDouble(lastNumber) * Convert.ToDouble(Number);
str = str.Remove(h, k - h+1);
str = str.Insert(h, m.ToString());
lastNumber = "";
Number = "";
return show(str);
}
if (str[i] == '/')
{
for (int j = i - 1; j >= 0; j--)
{
if (char.IsNumber(str[j]))
{
lastNumber = str[j] + lastNumber;
}
else
{
h = j + 1;
j = -1;
}
}
for (int j = i + 1; j < str.Length + 1; j++)
{
//要添加一位否则若最后一位是连乘检测不了
if (j < str.Length && char.IsNumber(str[j]))
{
Number = Number + str[j];
}
if ((j < str.Length && (str[j] == '+'||str[j]=='-'||str[j]=='*'||str[j]=='/')) || j == str.Length)
{
k = j - 1;
j = str.Length;
}
}
double m = Convert.ToDouble(lastNumber) / Convert.ToDouble(Number);
str = str.Remove(h, k - h + 1);
str = str.Insert(h, m.ToString());
lastNumber = "";
Number = "";
return show(str);
}
}
for (int j = 0; j < str.Length; j++)
{
if (flag == true)
{
if (char.IsNumber(str[j]) || str[j]=='.')
{
lastNumber = lastNumber + str[j];
}
else if(str[j] == '+'||str[j]=='-'||str[j]=='*'||str[j]=='/')
{
Fuhao = str[j];
flag = false;
}
}
else
{
if (char.IsNumber(str[j]) || str[j] == '.')
{
Number = Number + str[j];
}
else if (str[j] == '+' || str[j] == '-' || str[j] == '*' || str[j] == '/')
{
if (Fuhao == '+')
{
lastNumber = (int.Parse(lastNumber) + int.Parse(Number)).ToString();
Number = "";
}
if (Fuhao == '-')
{
lastNumber = (int.Parse(lastNumber) - int.Parse(Number)).ToString();
Number = "";
}
Fuhao = str[j];
}
}
}
//封顶的时候还得计算一次
if (Fuhao == '+')
{
lastNumber = (Convert.ToDouble(lastNumber) + Convert.ToDouble(Number)).ToString();
Number = "";
}
if (Fuhao == '-')
{
lastNumber = (Convert.ToDouble(lastNumber) - Convert.ToDouble(Number)).ToString();
Number = "";
}
return lastNumber;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication2
{
class Program
{
static bool flag = true;
static string lastNumber = "";
static string Number = "";
static char Fuhao;
static int h;
static int k;
static void Main(string[] args)
{
//DataTable dt = new DataTable();
//Console.WriteLine(dt.Compute("3+3*8-6", ""));
//Console.Read();
string str = "125+568-567*95/81-6/958";
Console.WriteLine(show(str));
Console.Read();
}
static string show(string str)
{
for (int i = 0; i < str.Length; i++)
{
if (str[i] == '*')
{
for (int j = i-1; j >= 0; j--)
{
if (char.IsNumber(str[j]) || str[j] == '.')
{
lastNumber = str[j]+lastNumber ;
}
else if (str[j] == '+' || str[j] == '-' || str[j] == '*' || str[j] == '/')
{
h = j+1;
j = -1;
}
}
for (int j = i +1; j < str.Length+1; j++)
{
//要添加一位否则若最后一位是连乘检测不了
if (j<str.Length&&(char.IsNumber(str[j])|| str[j]=='.'))
{
Number = Number + str[j];
}
if ((j < str.Length && (str[j] == '+'||str[j]=='-'||str[j]=='*'||str[j]=='/'))||j==str.Length)
{
k = j-1;
j = str.Length;
}
}
double m = Convert.ToDouble(lastNumber) * Convert.ToDouble(Number);
str = str.Remove(h, k - h+1);
str = str.Insert(h, m.ToString());
lastNumber = "";
Number = "";
return show(str);
}
if (str[i] == '/')
{
for (int j = i - 1; j >= 0; j--)
{
if (char.IsNumber(str[j]))
{
lastNumber = str[j] + lastNumber;
}
else
{
h = j + 1;
j = -1;
}
}
for (int j = i + 1; j < str.Length + 1; j++)
{
//要添加一位否则若最后一位是连乘检测不了
if (j < str.Length && char.IsNumber(str[j]))
{
Number = Number + str[j];
}
if ((j < str.Length && (str[j] == '+'||str[j]=='-'||str[j]=='*'||str[j]=='/')) || j == str.Length)
{
k = j - 1;
j = str.Length;
}
}
double m = Convert.ToDouble(lastNumber) / Convert.ToDouble(Number);
str = str.Remove(h, k - h + 1);
str = str.Insert(h, m.ToString());
lastNumber = "";
Number = "";
return show(str);
}
}
for (int j = 0; j < str.Length; j++)
{
if (flag == true)
{
if (char.IsNumber(str[j]) || str[j]=='.')
{
lastNumber = lastNumber + str[j];
}
else if(str[j] == '+'||str[j]=='-'||str[j]=='*'||str[j]=='/')
{
Fuhao = str[j];
flag = false;
}
}
else
{
if (char.IsNumber(str[j]) || str[j] == '.')
{
Number = Number + str[j];
}
else if (str[j] == '+' || str[j] == '-' || str[j] == '*' || str[j] == '/')
{
if (Fuhao == '+')
{
lastNumber = (int.Parse(lastNumber) + int.Parse(Number)).ToString();
Number = "";
}
if (Fuhao == '-')
{
lastNumber = (int.Parse(lastNumber) - int.Parse(Number)).ToString();
Number = "";
}
Fuhao = str[j];
}
}
}
//封顶的时候还得计算一次
if (Fuhao == '+')
{
lastNumber = (Convert.ToDouble(lastNumber) + Convert.ToDouble(Number)).ToString();
Number = "";
}
if (Fuhao == '-')
{
lastNumber = (Convert.ToDouble(lastNumber) - Convert.ToDouble(Number)).ToString();
Number = "";
}
return lastNumber;
}
}
}