| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 387 人关注过本帖
标题:求教:写的一个表达式的计算问题,请各位指点下
取消只看楼主 加入收藏
myself
Rank: 1
等 级:新手上路
帖 子:102
专家分:0
注 册:2006-10-10
收藏
 问题点数:0 回复次数:0 
求教:写的一个表达式的计算问题,请各位指点下

各位大侠,这是我写的第一个程序,关于计算输入表达式的算法,有些错误不知从何小手,请各位大侠能够帮忙改一下,在此谢过了..
using System;
using System.Collections.Generic;
using System.Text;

namespace math
{
class Program
{
public int i,j;

static void Main(string[] args)
{
string str=Console .ReadLine ();



// static string strmath(string str)

// {

int len =str.Length;
int on =1;

string[] str1 = new string[100];
string s1;
if (str.Substring (len-1,1)=="=")
{
for (int i=0;i<=len ;i++)
{
s1 = str.Substring(0, 1);

if (s1=="*" || s1=="/" || s1=="%")
{
Console .WriteLine ("第一个字符只能是数字或者函数,请重新输入!");
Console .ReadLine ();

}
if (s1=="+" || s1=="-" )
{
str[j++]=s1;
}


if (s1=="s" || s1=="c" || s1=="l" || s1=="t" || s1=="e" )
{

str[j++]= sanjiao(str.Substring (i));
}


if(int.Parse (s1)<=9 && int.Parse (s1)>=0)
{
str[j++]= shuzi(str.Substring (i));
}
if (s1=="(")
{
str[j++]=s1;
i++;
if (str.Substring (i,1)=="*" || str.Substring (i,1)=="/" || s1=="%")
{
Console .WriteLine ("第一个字符只能是数字或者函数,请重新输入!");
Console .ReadLine ();

}
if (str.Substring (i,1)=="+" || str.Substring (i,1)=="-" )
{
str[j++]=str.Substring (i,1);
}


if (str.Substring (i,1)=="s" || str.Substring (i,1)=="c" || str.Substring (i,1)=="l" || str.Substring (i,1)=="t" || str.Substring (i,1)=="e" )
{

str[j++]=sanjiao(str.Substring (i));
}


if(int.Parse (s1)<=9 &&int.Parse(s1)>=0)
{
str[j++]= shuzi(str.Substring (i));
}

}
}
Console.WriteLine(exception (str[],j));
}
}
static string shuzi()
{
int p=1;
for (i<=len;i++)
{

s1 = str.Substring(0, 1);

if (on==1 && (s1=="*" || s1=="/" ||s1=="+" || s1 =="-" || s1=="%" ))
{
on--;
str[j++]=s1;;

}
if (on==0 && (str.Substring (0,1)=="s" || str.Substring (0,1)=="c" || str.Substring (0,1)=="l" || str.Substring (0,1)=="t" ))
{

Console .WriteLine ("输入格式有误,请重新输入!");
Console .ReadLine ();
}

if(on ==0 && (s1<=58 && s1>=48) )
{
p++;
str[j++]=str.Substring (0,p);
}
//str1[j]=str.Substring (0,i);
return str.Substring (i);

}

}
static string sanjiao(string str)
{
if (str.Substring(0, 3) == "sin" || str.Substring(0, 3) == "cos" || str.Substring(0, 3) == "ctg")
{
i = i + 2;
}

if (str.Substring(0, 4) == "sqrt")
{
i = i + 3;
}
if (str.Substring(0, 2) == "lg")
{
i = i + 1;
}

if (str.Substring(i + 1, 1) == "(")
{
int k = 1;
for (int q = 0; q < len; q++)
{
if (str.Substring(i, 1) == "(")
{
k = k + 1;
}
if (str.Substring(i, 1) == ")")
{
k = k - 1;
}
if (k == 0)
{
// str[j++]=str.Substring (0,q);

//break;
}

}
return str.Substring(i);
}
}

static string exception(string[] str, int len1)
{
int k = 0;

for (int t = 0;t< len1; t++)
{
if (str[i] == "(")
{
k = k + 1;
}
if (str[i] == ")")
{
k = k - 1;
}
if (k == 0)
{
return exception(str, t);
for (int u = 0; u< t; u++)
{
if (str[u] == "*")
{
int.Parse(str[u - 1]) = int.Parse(str[u - 1]) * int.Parse(str[u]);

}
if (str[u] == "/")
{
int.Parse(str[u - 1]) = int.Parse(str[u - 1]) / int.Parse(str[u]);

}
if (str[u] == "%")
{
int.Parse(str[u - 1]) = int.Parse(str[u - 1]) % int.Parse(str[u]);

}
}
for (int y = 0; y< t;y++)
{
if (str[y] == "+")
{
int.Parse(str[y - 1]) = int.Parse(str[y - 1]) + int.Parse(str[y]);

}
if (str[y] == "-")
{
int.Parse(str[y - 1]) = int.Parse(str[y- 1]) - int.Parse(str[y]);

}
}
return Convert.ToString(str[j]);

}


}
}
}
}


搜索更多相关主题的帖子: 表达 
2006-10-11 11:45
快速回复:求教:写的一个表达式的计算问题,请各位指点下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016614 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved