本帖最后由 llsen 于 2009-10-28 12:24:33 编辑

解决方案 »

  1.   

    3000,北京平均月薪都不到
    ASP.NET程序员现在这么贱了?
      

  2.   

    楼主很喜欢钻牛角尖?
    我认为一个会增删查改 会用sqlhelper 会百度 google会ctrl+c ctrl+v 的,基本算一个能做事的程序员了
      

  3.   

    没一个能静心来做的呀,算法达人还真不是不多,大家都是ctrl+c,ctrl+v的
      

  4.   

    算法达人,我会ctrl+c,ctrl+v,比比吧
      

  5.   

    VMM在这杠上了。
    我说的可是上海这种一线城市,还算稍微正规一点的民营企业,那些皮包企业不在此列
    一个普通的只会整点页面和稍微懂点数据库常识的的ASP.NET程序员就是这个价3500-4500。。
      

  6.   

    会整点页面和稍微懂点数据库常识的ASP.NET程序员貌似与算法达人不搭界
      

  7.   

    括号Replace成小括号,然后执行SQL语句行不?
      

  8.   

    DECLARE @STR VARCHAR(500)DECLARE @STR1 VARCHAR(500)DECLARE @STR2 VARCHAR(500)SET @STR='1+6/3+{1*3+5+[(9-1)/3+3]}+2+(5+3)/2'
    SET @STR1=SUBSTRING(@STR,1,CHARINDEX('[',@STR)-1)
    SET @STR2=SUBSTRING(@STR,CHARINDEX(']',@STR)+1,LEN(@STR)-CHARINDEX(']',@STR))SELECT @STR=SUBSTRING(@STR,CHARINDEX('[',@STR)+1,CHARINDEX(']',@STR)-CHARINDEX('[',@STR)-1)--CREATE TABLE #T(COL VARCHAR(10))
    INSERT #T EXEC('SELECT '+@STR+'')SELECT @STR=@STR1+COL+@STR2 FROM #TSELECT @STR=REPLACE(REPLACE(@STR,'{','('),'}',')')EXEC('SELECT '+@STR+'')(所影响的行数为 1 行)            
    ----------- 
    22
    SQL做的,不过精度很难控制
      

  9.   

    方法一:根据运算符优先级split字符串,然后拼成计算的代码。方法二:直接调用office.excel里的一个函数即可。很无聊的题目
      

  10.   

    DECLARE @STR VARCHAR(500)
    SET @STR='1+6/3+{1*3+5+[(9-1)/3+3]}+2+(5+3)/2'
    SELECT @STR=REPLACE(REPLACE(REPLACE(REPLACE(@STR,'{','('),'}',')'),'[','('),']',')')
    EXEC('SELECT '+@STR+'')            
                
    ----------- 
    22
      

  11.   

    晕,还真有人去做??都是VMM口中的算法达人要清楚,算法达人这个价太贱了,8000+才是底线。。不过招算法达人,可能就不是这类型的题目了。
      

  12.   

    这个就是个计算时精度丢失的问题。
    把所有的数字都用一个double来替代,然后输入数字,计算。
    应该就可以了。ps:没测过,不知道对不对。salary小于3000.
      

  13.   

    我还以为llsen准备推荐到前台。
      

  14.   

        private string size(string str)
            {            
                string bz = "";
                str = (((((str.Replace(" ", "")).Replace("{","(")).Replace("[","(")).Replace("}",")")).Replace("]",")")).Trim('=');
                str1 = str.Split('(');
                if (str1.Length == 1) return jisuan( str);
                for (int i = 0; i < str1.Length; i++)
                {
                    if (str1[i] != "")
                    {
                        for (int j = 0; j < str1[i].Length; j++)
                        {
                            if (str1[i].Substring(j, 1).Equals(")"))
                            {
                                bz = str1[i].Substring(0, j);
                                if (jisuan(bz) == "")
                                    return "";
                                str1[i] = jisuan(bz) + str1[i].Substring(j+1);                            
                                str = "";
                                str = str1[0];
                                for (int k = 1; k < str1.Length; k++)
                                {
                                    if (k == i)
                                        str = str + str1[k];
                                    else
                                        str = str + "(" + str1[k];
                                }
                                return size(str);
                            }
                        }
                       
                    }
                    
                  
                    
                }
                return "";
            }
            private string jisuan(string str)
            {            
                char[] c = str.ToCharArray();            
                int bz = 0;
                string[] strsz=new string[c.Length];
                for (int i = 0; i < c.Length; i++)
                {
                    if (c[i].Equals('+') || c[i].Equals('-') || c[i].Equals('*') || c[i].Equals('/'))
                    {
                        bz++;
                        strsz[bz] = c[i].ToString();
                        bz++;
                    }
                    else
                    {
                        if (bz == c.Length)
                            return "";
                        strsz[bz] = strsz[bz] + c[i].ToString();
                    }
                    
                }
                if (bz == 0) return str;
                if (strsz.Length < bz + 1)
                    return "";
                for (int i = 0; i < bz+1; i++)
                {
                    if (strsz[i] == "*")
                    {
                        strsz[i] = (double.Parse(strsz[i - 1]) * double.Parse(strsz[i + 1])).ToString();
                        strsz[i - 1] = "";
                        strsz[i + 1] = "";
                        str = "";
                        for (int j = 0; j < bz + 1; j++)
                        {
                            str = str + strsz[j];
                        }
                        return jisuan(str);
                    }
                }
                for (int i = 0; i < bz + 1; i++)
                {
                    if (strsz[i] == "/")
                    {
                        if (strsz[i + 1] == "0")
                        {
                            MessageBox.Show("除数不能为零!");
                            return "";
                        }
                        strsz[i] = (double.Parse(strsz[i - 1]) / double.Parse(strsz[i + 1])).ToString();
                        strsz[i - 1] = "";
                        strsz[i + 1] = "";
                        str = "";
                        for (int j = 0; j < bz + 1; j++)
                        {
                            str = str + strsz[j];
                        }
                        return jisuan(str);
                    }
                }
                for (int i = 0; i < bz + 1; i++)
                {
                    if (strsz[i] == "+")
                    {
                        strsz[i] = (double.Parse(strsz[i - 1]) + double.Parse(strsz[i + 1])).ToString();
                        strsz[i - 1] = "";
                        strsz[i + 1] = "";
                        str = "";
                        for (int j = 0; j < bz + 1; j++)
                        {
                            str = str + strsz[j];
                        }
                        return jisuan(str);
                    }
                }
                for (int i = 0; i < bz + 1; i++)
                {
                    if (strsz[i] == "-")
                    {                    
                        strsz[i] = (double.Parse(strsz[i - 1]) - double.Parse(strsz[i + 1])).ToString();                                     
                        strsz[i - 1] = "";
                        strsz[i + 1] = "";
                        str = "";
                        for (int j = 0; j < bz + 1; j++)
                        {
                            str = str + strsz[j];
                        }
                        return jisuan(str);
                    } 
                }
                return "";
            }
      

  15.   

    就几句话搞定,3000块,情有可原~~~            string str = "1+6/3+{1*3+5+[(9-1)/3+3]}+2+(5+3)/2=";
                object o = new DataTable().Compute(str.Replace("=", "").Replace("{", "(").Replace("}", ")").Replace("[", "(").Replace("]", ")"), "");
                Console.WriteLine(Convert.ToDouble(o).ToString("F2"));