Problem z tworzeniem obiektu

0

Witam,
Napotkałem problem podczas pisania programu.

                 
if (CalkowanieWzor1.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.MetodaProstokatow(F, a, b, n);
                    WynikWzorProstokatow.Text = WynikNumeryczny.ToString();
                }

Całość jest pod wywoływana przyciskiem oblicz. Teraz pytanie...Czemu program wywala mi komunikat Nieznane F, w momencie gdy linijkę calkowanie.funkcja F = ...... wyrzucę linijkę wyżej (tzn. przed CalkowanieWzor1.Checked.....)

0

Pokaż więcej kodu :) Razem z blokiem nadrzędnym.

0
 private void Oblicz_Click(object sender, EventArgs e)
        {
            a = double.Parse(WczytywanieA.Text.ToString());
            b = double.Parse(WczytywanieB.Text.ToString());
            n = int.Parse(WczytywaniePrzedzial.Text.ToString());


            if (WyborFunkcji1.Checked == true)
            {
                WynikAnalityczny = ((Math.Pow(b, 3)) / 3) - ((Math.Pow(a, 3)) / 3);
                
                if (CalkowanieWzor1.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.MetodaProstokatow(F, a, b, n);
                    WynikWzorProstokatow.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorProstokatow.Text = ("Nie wybrano");
                }
                if (CalkowanieWzor2.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.MetodaTrapezow(F, a, b, n);
                    WynikWzorTrapezow.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorTrapezow.Text = ("Nie wybrano");
                }
                if (CalkowanieWzor3.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.MetodaSimpsona(F, a, b, n);
                    WynikWzorSimpsona.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorSimpsona.Text = ("Nie wybrano");
                }

                if (CalkowanieWzor4.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.MetodaTrzyOsme(F, a, b, n);
                    WynikWzorTrzyOsme.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorTrzyOsme.Text = ("Nie wybrano");
                }

                if (CalkowanieWzor5.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.MetodaBoola(F, a, b, n);
                    WynikWzorBoola.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorBoola.Text = ("Nie wybrano");
                }

                if (CalkowanieWzor6.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.MetodaSzesciopunktowa(F,a,b,n);
                    WynikWzorSzescioPunktowy.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorSzescioPunktowy.Text = ("Nie wybrano");
                }

                if (CalkowanieWzor7.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.WzorTypuOtwartegoRzad0(F, a, b, n);
                    WynikWzorOtwarty0rzad.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorOtwarty0rzad.Text = ("Nie wybrano");
                }

                if (CalkowanieWzor8.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.WzorTypuOtwartegoRzad1(F, a, b, n);
                    WynikWzorOtwarty1Rzad.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorOtwarty1Rzad.Text = ("Nie wybrano");
                }

                if (CalkowanieWzor9.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.WzorTypuOtwartegoRzad2(F, a, b, n);
                    WynikWzorOtwarty2Rzad.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorOtwarty2Rzad.Text = ("Nie wybrano");
                }

                if (CalkowanieWzor10.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.WzorTypuOtwartegoRzad3(F, a, b, n);
                    WynikWzorOtwarty3Rzad.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorOtwarty3Rzad.Text = ("Nie wybrano");
                }

                if (CalkowanieWzor11.Checked == true)
                {
                    calkowanie.funkcja F = new calkowanie.funkcja(Funkcja1);
                    WynikNumeryczny = calkowanie.WzorTypuOtwartegoRzad4(F, a, b, n);
                    WynikWzorOtwarty4Rzad.Text = WynikNumeryczny.ToString();
                }
                else
                {
                    WynikWzorOtwarty4Rzad.Text = ("Nie wybrano");
                }

            }

Coś takiego. Wszystkie te warunki muszę powtórzyć dla 3 funkcji, co wiąże się z powtórzeniem tych warunków 3 razy. Chcę tylko zrobić tak aby zmieniał się parametr Funkcja1 (Funkcja1 - jest to funkcja, public static double Funkcja1(double a)). Posiadam osobną klasę calkowanie a w niej delegat funkcja (double a)..coś takiego

{
    class calkowanie
    {
        public delegate double funkcja(double a);

        public static double MetodaProstokatow(funkcja F, double a, double b, int n)
        {
            double suma = 0;
            double h = (b - a) / n;
            for (int i = 0; i <= (n - 1); i++)
            {
                suma = suma + F(a + i * h);
            }
            suma = h * suma;
            return suma;
...itd
        } 

Jak zrobić żeby ominąć powtarzanie kodu? Bo po zaznaczeniu WyborFunkcji1 mam jakieś warunki. Te same będą dla WybórFunkcji2 raz WyborFunkcji3. Zmianie będzie tylko ulegać zmienna Funkcja1 na Funkcje2 oraz Funkcje3 w miejscu tworzenia obiektu typu calkowanie.funkcja.

0

Ten kod zbyt źle wygląda by na mój obecny stan go analizować. Radziłbym poprawę o jakiś Dictionary< nazwa_radiobuttona, akcja/delegat>. W ogóle potrzebujesz tyle textboxów? Nie wystarczy Ci jeden na poprawną odpowiedź?

1 użytkowników online, w tym zalogowanych: 0, gości: 1