【发布时间】:2019-03-29 20:11:30
【问题描述】:
我在 C# 控制台应用程序中制作了二分法程序。二分法有效,但对于已经写在代码中的函数。我想编辑用户可以输入他们想要用于二分法的函数的程序。例如 Console.ReadLine() 用于输入 "x^2 + x - 2" 然后我希望它在 return 之后自动写入代码如下。
static double Function(double x)
{
return x*x - 2;
} //this is Function which I used in code.
这是整个代码。 (正如我提到的,它适用于在 static double Function(double x) 部分
中编写的函数using System;
namespace MPI
{
class MainClass
{
public static void Main(string[] args)
{
// in [a,b]
double inPoc = 0; //a
double inKraj = 0; //b
double sredina = 0;
double tacnost = 0;
Start:
int i = 0; //brojac
Console.Write("Unesite početak intervala: ");
inPoc = Convert.ToDouble(Console.ReadLine());
Console.Write("Unesite kraj intervala: ");
inKraj = Convert.ToDouble(Console.ReadLine());
Console.Write("Unesite tacnost: ");
tacnost = Convert.ToDouble(Console.ReadLine());
sredina = (inPoc + inKraj) / 2;
if (Function(inPoc) * Function(inKraj) < 0)
{
while ((Math.Abs(inPoc - inKraj)) > tacnost)
{
sredina = (inPoc + inKraj) / 2;
Console.WriteLine("trenutno X: " + sredina);
Console.WriteLine("Funkcija za trenutno x ima vrednost: " + Function(sredina));
Console.WriteLine("");
i++;
if (Function(sredina) < 0)
{
inPoc = sredina;
}
else
{
inKraj = sredina;
}
}
Console.WriteLine("X: " + sredina);
Console.WriteLine("Broj izvrsenih koraka je " + i);
}
else
{
Console.WriteLine("Krajevi intervala funkcije su istog znaka");
Console.WriteLine();
}
goto Start; //sluzi da vrati program na pocetak kako bi ga opet koristili
}
static double Function(double x)
{
return x*x - 2; //primer funkcije
}
}
}
【问题讨论】:
-
如果你翻译代码中的字符串和 cmets 可能会很方便,这样每个人都可以理解他们所说的。
-
你看
dotnet-script了吗?在那里,用户可以交互地编写您的代码,并且不需要解析 (hanselman.com/blog/…)。另一种可能性是使用反射将用户输入直接解释为 C# 代码:codeproject.com/Articles/9019/…
标签: c# methods static-methods bisection