标题:求个大神 帮忙写段作业代码
只看楼主
wszj1314
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-12-24
结帖率:0
已结贴  问题点数:20 回复次数:10 
求个大神 帮忙写段作业代码
  例:  控制台应用计算机

  例:控制台输入 :4*4回车得到结果,
      控制台输入:5加8除以4 回车得到结果,
      控制台输入:  16.54*14.2加6减2  回车得结果。  
 
  可以无限循环的c# 代码,  现在课程还在基础班,不要太深入代码,求大神帮忙!
搜索更多相关主题的帖子: 课程 控制台 计算机 
2015-12-24 22:40
shghe
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2006-5-3
得分:10 
一个个的读取字符串就OK了
2015-12-29 11:09
hubinyes
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:104
专家分:557
注 册:2014-2-4
得分:10 
这太难了
2015-12-29 15:18
林振强小更
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-1-8
得分:0 
不会
2016-01-08 10:28
小亲个
Rank: 1
等 级:新手上路
帖 子:3
专家分:6
注 册:2016-1-8
得分:0 
作业应该自己完成昂
2016-01-08 22:47
丨渊丨
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-1-25
得分:0 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 计算器
{
    class Program
    {
        static void Main(string[] args)
        {
           Console.WriteLine("请输入一个算式");
           string str = Console.ReadLine();//接受收入的运算
           string[] separator = {"+","-","*","/" };//用来分割str,获得数字
           string[] number = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };// 用来分割str,获得操作符
           List<string> lstr = new List<string>();//定义一个string的泛型集合
           lstr.AddRange(str.Split(separator, StringSplitOptions.RemoveEmptyEntries));//将str分割得到的数字存到泛型集合中
           List<string> lopretor = new List<string>();//定义一个string的泛型集合
           lopretor.AddRange(str.Split(number,StringSplitOptions.RemoveEmptyEntries));//将str分割得到的运算符存到泛型集合中
            //删除小数点,留下+ - * /
           while (true)
           {
               lopretor.Remove(".");
               if (!lopretor.Contains("."))
               {
                   break;
               }
           }  
           //foreach (var item in lopretor)
           //{
           //    Console.WriteLine(item);
           //}
           double result = 0;//定义一个结果用来接收
           for (int i = 0; i < lopretor.Count; i++)//循环遍历lpretor的集合,读取其中存储的操作符
           {
               Opretor o = Factory.GetOpretor(lopretor[i]);//调用Factory的GetOpretor方法,根据lopretor[i]的值返回一个Opretor对象
               if (i == 0)//该运算符的索引为0
               {
                   result = o.GetResult(Convert.ToDouble(lstr[i]), Convert.ToDouble(lstr[i + 1]));//将lstr的前2个数字做运算
               }
               else//该运算符的索引位置不为0时
               {
                    result=o.GetResult(result, Convert.ToDouble(lstr[i + 1]));//将第一次的结果result传入方法中做运算
               }
            
           }
           Console.Write(result);
           Console.ReadKey();
        }
    }
    //定义一个工厂类
    public class Factory
    {
        public static Opretor GetOpretor(string op)
        {
            Opretor opre = null;
            switch(op)
            {
                case "+": opre = new Add();
                    break;
                case "-": opre = new Cut();
                    break;
                case "*": opre = new Mul();
                    break;
                case "/": opre = new Div();
                    break;
                default: return null;
            }
            return opre;
        }
    }
    //定义一个运算类
    public class Opretor
    {
        //声明一个虚方法
        public virtual double GetResult(double num1, double num2)
        {
            return 0;
        }      
    }
    //定义一个加法类,继承运算类
    public class Add : Opretor
    {
        //重写运算类中GetResult的方法
        public override double GetResult(double num1, double num2)
        {
            return num1 + num2;
        }
    }
    //定义一个减法类,继承运算类
    public class Cut : Opretor
    {
        //重写运算类中GetResult的方法
        public override double GetResult(double num1, double num2)
        {
            return num1 - num2;
        }
    }
    //定义一个乘法类,继承运算类
    public class Mul : Opretor
    {
        //重写运算类中GetResult的方法
        public override double GetResult(double num1, double num2)
        {
            return num1 * num2;
        }
    }
    //定义一个除法类,继承运算类
    public class Div : Opretor
    {
        //重写运算类中GetResult的方法
        public override double GetResult(double num1, double num2)
        {
            return num1 / num2;
        }
    }
}
2016-01-25 16:36
丨渊丨
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-1-25
得分:0 
上面是我自己写的一个C#的控制台计算器, 你添加个循环就可以满足你的需求了
2016-01-25 16:37
丨渊丨
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-1-25
得分:0 
我写的那个计算器多少还是有些问题的     你输入4+8/4得到的结果会是3,而不是6, 会取到第一次运算的结果,来参与第二次运算,而不是按照加减乘除的运算循序。
2016-01-25 16:59
米粒大小3
Rank: 1
等 级:新手上路
帖 子:40
专家分:7
注 册:2015-10-25
得分:0 
回复 6楼 丨渊丨
你这个好像没有考虑计算先后顺序
2016-01-25 17:03
米粒大小3
Rank: 1
等 级:新手上路
帖 子:40
专家分:7
注 册:2015-10-25
得分:0 
回复 8楼 丨渊丨
已经很厉害了
2016-01-25 17:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-460547-1-1.html




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

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