Работаю над проблемой, когда мне нужно сделать программу, предлагающую вам выбрать одну из нескольких функций; предоставляет возможность устанавливать значения коэффициентов a, b и c, а также начальные и конечные значения и шаги аргумента x. После нажатия кнопки Таблица отображается таблица значений аргументов и функций.
И это должно быть так, чтобы каждая функция была отдельной подпрограммой. И создайте метод вкладки функции, чтобы он мог передавать выбранную функцию в качестве параметра.
У меня есть некоторые успехи, но я столкнулся с ошибкой: «Невызываемый элемент Form1.b не может использоваться как метод». и я не могу понять, хоть убей, что я делаю не так.
Код на данный момент:
namespace MD2._5
{
public partial class Form1 : Form
{
int step;
double xEnd, xBegin;
double a, b, c;
public Form1()
{
InitializeComponent();
}
public delegate double DY(double a, double b, double c, int x); //declares delegate
public static double Y0(double a, double b, double c, int x) //function to calculate the result
{
return a * (x * x) + (b * x + c);
}
public static double Y1(double a, double b, double c, int x)
{
return (a / (x * x)) + (b / x + c);
}
public static double Y2(double a, double b, double c, int x)
{
return ((a * x) + b) / ((a * x) + c);
}
public DY[] Y = new DY[3] { Y0, Y1, Y2 }; //Creates a array of the functions above
private void radioButton1_Click(object sender, EventArgs e)
{
int buttonPressed = Convert.ToInt32(((RadioButton)sender).Tag);
DoTable(Y[buttonPressed]);
}
private void DoTable(DY y) //This will print the table
{
richTextBox1.Clear();
richTextBox1.AppendText(" x y ");
double howmanylines = xEnd + xBegin;
for (double x = howmanylines; x <= howmanylines; x += step)
{
richTextBox1.AppendText("\n " + x.ToString() + "\t" + y(x).ToString()); //error appearing here
}
}
private void step_TextChanged(object sender, EventArgs e) //sets the step int
{
step = Convert.ToInt32(stepText.Text);
}
private void x_end_TextChanged(object sender, EventArgs e)//Sets x end
{
xEnd = Convert.ToInt32(x_end.Text);
}
private void x_begin_TextChanged(object sender, EventArgs e) //sets x begin
{
xBegin = Convert.ToInt32(x_begin.Text);
}
private void textBoxA_TextChanged(object sender, EventArgs e) //sets a value
{
a = Convert.ToInt32(textBoxA.Text);
}
private void textBoxB_TextChanged(object sender, EventArgs e) //sets b value
{
b = Convert.ToInt32(textBoxB.Text);
}
private void textBoxC_TextChanged(object sender, EventArgs e) //sets c value
{
c = Convert.ToInt32(textBoxC.Text);
}
Конечный результат должен выглядеть примерно так (цифры показаны, поскольку программа не запускается прямо сейчас):
Вторая часть - это создание графической версии таблицы, но это на потом, так как я пока не знаю, как это сделать.
Любые указатели, критика или предложения очень ценятся.
Спасибо
1 ответ
«Невызываемый элемент Form1.b не может использоваться как метод».
Вы получаете эту ошибку, потому что в строке ниже
richTextBox1.AppendText("\n " + x.ToString() + "\t" + y(x).ToString());
Поскольку вы вызываете делегат DY как y (x), то есть передавая один параметр, но делегат DY ожидает 4 параметра a, b, c и x, поскольку он не смог найти b, он выдает эту ошибку.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.