Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2011, 17:38   #1
stopanko
 
Регистрация: 12.11.2011
Сообщений: 3
По умолчанию Передача функции другой функции как аргумента C #

функции F, G-фуекции от 2 переменных. F1x, G1x .. частные производные соответственно по х и у. Нужно найти определитель параметрами которого будут определенные функции (4 штуки). Проблема сводится к тому, что нужно передать фуекцию как аргумент.

HELP Прочитал что такое реализуют делегаты но как с тем всем работать не знаю.
Код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace Lab5
{
    public partial class Form1 : Form
    {
        double a, b, c, d,eps,Xold,Xnew,Yold,Ynew;
        //public delegate double Func(double x, double y); пробував

        public class Functions
        {

           // public Func ob = new Func(Fx(double e,double r)); пробував
            

            
            

            public  double Fx(double x, double y)//фуекція дял 1 мтоду
            {
               double Res = (2 - Math.Sin(x)) / 2;
                return Res;
            }

            public double Fy(double x, double y)//фуекція дял 1 мтоду
            {
                double Res = 0.7-Math.Cos(y-1);
                return Res;
            }

            public double Fxy(double x, double y)//Функція для 2 методу
            {
                double Res = Math.Sin(x) + 2 * y - 2;
                return Res;
 
            }

            public double Gxy(double x, double y)//Функція для 2 методу
            {
                double Res = Math.Cos(y - 1) + x - 0.7;
                return Res;
 
            }

            public double F1x(double x, double y)//Похідна по х  функції для 2 методу
            {
                double Res = Math.Cos(x);
                return Res;            
            }

            public double F1y(double x, double y)//Похідна по y функції для 2 методу
            {
                double Res = 2;
                return Res;
            }

            public double G1x(double x, double y)//Похідна по х функції для 2 методу
            {
                double Res = 1;
                return Res;
            }

            public double G1y(double x, double y)//Похідна по y функції для 2 методу
            {
                double Res=-Math.Sin(y - 1);
                return Res;
            }

            public double Deltak()//сюда передать параметри(функции  G1y, G1х,F1y,F1х)
            {


            }

            
       

        }
        
        
         


        public Form1()
        {
            InitializeComponent();
        }

        private void btnEnter_Click(object sender, EventArgs e)
        {
            a =float.Parse(textA.Text);
            b = float.Parse(textB.Text);
            c = float.Parse(textC.Text);
            d = float.Parse(textD.Text);
            eps = float.Parse(textEps.Text);
        }

        private void btnProstIter_Click(object sender, EventArgs e)
        {   
            Functions ob=new Functions();
            Xold = (a + b) / 2;
            Yold = (c + d) / 2;
            do
            {
                Xnew = ob.Fx(Xold, Yold);
                Ynew = ob.Fy(Xold, Yold);
                Yold = Ynew;
                Xold = Xnew;

            } while ((Math.Abs(Xnew - Xold) + Math.Abs(Ynew - Yold))>eps);

            richTextBox1.AppendText("\nX=\t"+Convert.ToString(Xnew));
            richTextBox1.AppendText("\nY=\t" + Convert.ToString(Ynew));
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
        }

              
    }
}
stopanko вне форума Ответить с цитированием
Старый 13.11.2011, 11:53   #2
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Не совсем понял, что надо получить в итоге, передать делегат, как аргумент:
Код:
        public class Functions
        {
            public delegate double Func(double x, double y);
 public double Deltak(Func func1, Func func2, Func func3, Func func4)
            {
            }
         }
Не очень красиво, но должно работать.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 20.11.2011, 13:13   #3
stopanko
 
Регистрация: 12.11.2011
Сообщений: 3
По умолчанию

СПС - Конає
stopanko вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычисление функции по значению аргумента specialist Паскаль, Turbo Pascal, PascalABC.NET 0 13.05.2011 23:08
Как массив передать в качестве аргумента функции Mixim C# (си шарп) 7 10.03.2011 09:53
16. Нарисовать точечный график функции . Диапазон изменения аргумента: от 15 до 5, шаг аргумента – 0,1. dzuga Паскаль, Turbo Pascal, PascalABC.NET 1 09.06.2010 06:12
16. Нарисовать точечный график функции . Диапазон изменения аргумента: от 15 до 5, шаг аргумента – 0,1. dzuga Помощь студентам 6 08.06.2010 17:19
Функции. Передача массива в качестве параметра функции. Wia Помощь студентам 2 17.03.2009 14:57