gpt4 book ai didi

C# 随机控制台数学方程式游戏 : Converting string back to equation?

转载 作者:行者123 更新时间:2023-11-30 21:31:48 24 4
gpt4 key购买 nike

我目前正在自学 C#,并提出了如下程序想法:

  1. 程序生成随机数
  2. 程序生成随机数学运算符
  3. 程序生成随机数
  4. 要求用户回答随机生成的问题
  5. 用户输入答案
  6. 程序将生成问题的结果与用户输入进行比较
  7. 程序打印用户是正确还是错误。

我遇到的问题是我只能以下列格式/数据类型打印方程:

(示例)5 + 1(数字,字符串运算符,数字)

或将上述数据类型组合成一个字符串

从那里开始,问题是我无法弄清楚如何将所有这些转换成可以存储在变量中然后与用户输入进行比较的数学方程式。

我确信我正在让它变得比实际情况更难,但我一直在这个程序、论坛和大量帖子中,但无法将任何东西拼凑在一起。

在我学习 C# 的过程中,如果能深入了解我的代码以及哪里出了问题,我们将不胜感激!

public static void Main(string[] args)
{
mathProblem();
int userAnswer = Convert.ToInt32(Console.ReadLine());
}

public static void mathProblem()
{
Random numberGenerator = new Random();
Random operatorSelect = new Random();

//Generates random number for 1st part of problem
int number1 = numberGenerator.Next(1, 11);
//Generates random number for 2nd part of problem
int number2 = numberGenerator.Next(1, 11);
//int to store/assign random operator
int mathOperator = 0;
//newOperator set to empty string that will change and store operator generated
string newOperator = "";

// gives value of 1-4
mathOperator = operatorSelect.Next(5);
switch (mathOperator)
{
case 1:
newOperator = "+";
break;
case 2:
newOperator = "-";
break;
case 3:
newOperator = "*";
break;
case 4:
newOperator = "/";
break;
default:
newOperator = "+";
break;
}

Convert.ToString(number1);
Convert.ToString(number2);

Console.WriteLine("What is " + number1 + " " + newOperator + " " + number2 + "?");
}

最佳答案

算术运算是接受两个数字并返回第三个数字的函数。一般来说,它们可以表示为一个函数:

int AddOperation(int a, int b)
{
return a + b;
}

此类函数的委托(delegate)可以存储在类型为 Func<int,int,int> 的变量中.

Func<int,int,int> functionPointer = AddOperation;

而不是只为 AddOperation 声明整个方法,你也可以将它存储为 anonymous methodlambda expression 声明:

Func<int,int,int> functionPointer = (a,b) => a + b;

并且您可以存储一系列这些函数,例如,在字典中:

var operators = new Dictionary<string,Func<int,int,int>>
{
{ "+", (a,b) => a + b },
{ "-", (a,b) => a - b },
{ "*", (a,b) => a * b },
{ "/", (a,b) => a / b }
};

然后执行一个操作,你查找函数:

var symbol = "+";
var operation = operators[symbol];

...并用它来计算结果:

var result = operation(arg1,arg2);

这是一个对数字 10 和 2 执行所有四个操作的示例:

public static void Main()
{
var operators = new Dictionary<string,Func<int,int,int>>
{
{ "+", (a,b) => a + b },
{ "-", (a,b) => a - b },
{ "*", (a,b) => a * b },
{ "/", (a,b) => a / b }
};

var arg1 = 10;
var arg2 = 2;

foreach (var symbol in operators.Keys)
{
var func = operators[symbol];
var result = func(arg1,arg2);
Console.WriteLine("{0}{1}{2}={3}", arg1, symbol, arg2, result);
}
}

输出:

10+2=12
10-2=8
10*2=20
10/2=5

Link to working example on DotNetFiddle

关于C# 随机控制台数学方程式游戏 : Converting string back to equation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52844358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com