Написан код для передачи функций в качестве параметров:
using System;
namespace Lab12
{
delegate double F1(double a);
class Program
{
public void input(double[] x, ref string q)
{
string s;
for (int i = 0; i < x.Length; i++)
{
Console.WriteLine("Enter {0}[{1}]=", q, i);
s = Console.ReadLine();
x[i] = Convert.ToDouble(s);
}
}
public void sum(double[] x, F1 f1, F1 f2, F1 f3, F1 f4, out double A, out double B, out double C, out double s, out double p, out double D, out double E, out double F)
{
A = B = C = D = E = F = s = 0;
p = 1;
for (int i = 0; i < x.Length; i++)
{
s += x[i];
p *= x[i];
A += s * x[i] * f1(x[i]);
B += p * x[i] * f2(x[i]);
C += (s + p) * x[i] * f3(x[i]);
D += s * x[i] * f3(x[i]);
E += p * x[i] * f4(x[i]);
F += (s + p) * x[i] * f2(x[i]);
}
}
static void Main(string[] args)
{
Program q = new Program();
string w;
int n, m;
Console.WriteLine("Enter n=");
w = Console.ReadLine();
n = Convert.ToInt32(w);
Console.WriteLine("Enter m=");
w = Console.ReadLine();
m = Convert.ToInt32(w);
string name1 = "alfa";
string name2 = "beta";
double[] alfa = new double[n];
double[] beta = new double[m];
double A, B, C, D, E, F, s, p, denominator, gamma;
q.input(alfa, ref name1);
q.input(beta, ref name2);
q.sum(alfa, Math.Sin, Math.Cos, Math.Tan, out A, out B, out C, out s, out p);
q.sum(beta, Math.Tan, Math.Exp, Math.Sin, out D, out E, out F, out s, out p);
denominator = D * E * Math.Sin(F);
if (denominator != 0)
{
gamma = (A + B * Math.Cos(C)) / (D + E * Math.Sin(F));
}
else
Console.WriteLine("Division by zero!");
}
}
}
Но выдает ошибку "Отсутствует аргумент, соответствующий требуемому формальному параметру "p" из "Program.sum(double[], F1, F1, F1, F1, out double, out double, out double, out double, out double, out double, out double, out double)"
В чем может быть причина?