Не могу разобраться с типом функции - C#
Формулировка задачи:
Как правильно задать функцию в С#, чтобы на выходе получилась математическая функция? Поясню.
Приводить весь код моей функции не буду, дабы не нагружать ненужной информацией, лишь скажу, что
на выходе должна получиться математическая функция Math.Pow(kf * x, st), где х - это не число,
а переменная, и потом, когда я буду вызывать эту функцию parse_func() в главной программе, можно было использовать её в цикле и нужно, чтобы вместо икса подставлялись значения и всё считалось, а сейчас у меня на выходе получается число
static double parse_func(string func, double Xn, double Xk, double h) { ... return (nenum == true) ? Math.Pow(kf * x, st) : free; }
static void Main(string[] args) { ... for (i = 0, x = Xn; x <= Xk; i++, x = x + h) { Console.Write("\n\n " + x + " "); Console.Write(parse_func(f, Xn, Xk, h)); }
Решение задачи: «Не могу разобраться с типом функции»
textual
Листинг программы
namespace method_setok { delegate double name_delegate(string func, double Xn, double Xk, double h); class Program { static double parse_func(string func, double Xn, double Xk, double h) { double x = Xn; int i, j, kf = 1, st = 1, ost, free = 0, n; string sKF = "", sST = ""; bool minus, nenum = false; n = Convert.ToInt32((Xk - Xn) / h + 1); double[] arr = new double[n]; if (func[0] == '-') minus = true; else minus = false; if (minus == true) j = 1; else j = 0; for (i = j; i < func.Length; i++) { if ((int)func[i] < 48 || (int)func[i] > 57) nenum = true; } if (nenum == true) { while ((int)func[j] >= 48 && (int)func[j] <= 57) { sKF = sKF + func[j]; j++; } if (sKF.Length > 0) kf = Convert.ToInt32(sKF); if (minus == true) kf = -kf; ost = func.Length - sKF.Length - Convert.ToInt32(minus) - 1; if (ost != 0) { for (i = func.Length - ost + 1; i < func.Length; i++) sST = sST + func[i]; if (sST.Length > 0) st = Convert.ToInt32(sST); } } else { free = Convert.ToInt32(func); kf = 0; st = 0; } return (nenum == true) ? Math.Pow(kf * x, st) : free; } static void Main(string[] args) { string p, q, f; double Xn, Xk, h, x; int i; Console.Write("\n Данная программа найдёт решение дифференциального уравнения вида \n y\" + p(x)y' + q(x)y = f(x) методом сеток.\n\n Введите функцию p(x) = "); p = Console.ReadLine(); Console.Write("\n Введите функцию q(x) = "); q = Console.ReadLine(); Console.Write("\n Введите функцию f(x) = "); f = Console.ReadLine(); Console.Write("\n Введите начало промежутка Xn = "); Xn = Convert.ToDouble(Console.ReadLine()); Console.Write("\n Введите конец промежутка Xk = "); Xk = Convert.ToDouble(Console.ReadLine()); Console.Write("\n Введите шаг промежутка h = "); h = Convert.ToDouble(Console.ReadLine()); name_delegate xz = new name_delegate(parse_func); double P = xz(p, Xn, Xk, h); double Q = xz(q, Xn, Xk, h); double F = xz(f, Xn, Xk, h); for (i = 0, x = Xn; x <= Xk; i++, x = x + h) { Console.Write("\n\n " + x + " "); Console.Write(P + " " + Q + " " + F); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д