Модифицировать программу так, чтобы можно было передавать функцию в виде делегата - C#
Формулировка задачи:
Модифицировать программу нахождения минимума функции так, чтобы можно было
передавать функцию в виде делегата. Сделать меню с различными функциями и представьте
пользователю выбор для какой функции и на каком отрезке находить минимум.
Вот программа:
Собственно не пойму как реализовать?
Листинг программы
- namespace DoubleBinary
- {
- class Program
- {
- public static double F(double x)
- {
- return x * x-50*x+10;
- }
- public static void SaveFunc(string fileName, double a,double b,double h)
- {
- FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
- BinaryWriter bw = new BinaryWriter(fs);
- double x = a;
- while (x<=b)
- {
- bw.Write(F(x));
- x += h;// x=x+h;
- }
- bw.Close();
- fs.Close();
- }
- public static double Load(string fileName)
- {
- FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
- BinaryReader bw = new BinaryReader(fs);
- double min = double.MaxValue;
- double d;
- for(int i=0;i<fs.Length/sizeof(double);i++)
- {
- // Считываем значение и переходим к следующему
- d = bw.ReadDouble();
- if (d < min) min = d;
- }
- bw.Close();
- fs.Close();
- return min;
- }
- static void Main(string[] args)
- {
- SaveFunc("data.bin", -100, 100, 0.5);
- Console.WriteLine(Load("data.bin"));
- Console.ReadKey();
- }
- }
- }
как превратить в делегат?
Решение задачи: «Модифицировать программу так, чтобы можно было передавать функцию в виде делегата»
textual
Листинг программы
- namespace DoubleBinary
- {
- class Program
- {
- public delegate double function(double x);
- public static double F1(double x)
- {
- return x * x - 50 * x + 10;
- }
- public static double F2(double x)
- {
- return x * x - 10 * x + 50;
- }
- public static void SaveFunc(string fileName, double a, double b, double h, function F)
- {
- FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
- BinaryWriter bw = new BinaryWriter(fs);
- double x = a;
- while (x <= b)
- {
- bw.Write(F(x));
- x += h;// x=x+h;
- }
- bw.Close();
- fs.Close();
- }
- public static double Load(string fileName)
- {
- FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
- BinaryReader bw = new BinaryReader(fs);
- double min = double.MaxValue;
- double d;
- for (int i = 0; i < fs.Length / sizeof(double); i++)
- {
- // Считываем значение и переходим к следующему
- d = bw.ReadDouble();
- if (d < min) min = d;
- }
- bw.Close();
- fs.Close();
- return min;
- }
- static void Main(string[] args)
- {
- function[] F = {F1, F2};
- Console.WriteLine("Сделайте выбор: 1 - функция F1, 2 - функция F2");
- int index = int.Parse(Console.ReadLine());
- SaveFunc("data.bin", -100, 100, 0.5, F[index-1]);
- Console.WriteLine(Load("data.bin"));
- Console.ReadKey();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д