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.