Ошибка при расчете - "cannot convert from 'method group' to 'double'" - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Делала на c# программу, реализующую подсчет сложных процентов по периодам и вывод соответствующего графика. Но при запуске возникает 2 ошибки: 1) The best overloaded method match for 'System.Math.Round(double, int)' has some invalid arguments 2) Argument '1': cannot convert from 'method group' to 'double' Помогите, пожалуйста, разобраться
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public double d, p, n;
        double sum;
        public int k;
 
        public Form1()
        {
            InitializeComponent();
            textBox2.MaxLength = 2;
        }
 
        public static class FunctionSet
        {
 
            public static double Func1(double d, double p, double n)
            {
 
                return (d * Math.Pow((1 + (p / 100)), n));
 
            }
        }

        public void button1_Click(object sender, EventArgs e)
        {
            try
            {
                double d = Convert.ToDouble(textBox1.Text);
                double p = Convert.ToDouble(textBox2.Text);
                double n = Convert.ToDouble(textBox3.Text);
                double inter = Convert.ToDouble(textBox5.Text);
                sum = (d * Math.Round(Math.Pow((1 + (p / 100)), n), 2));
                textBox4.Text = Convert.ToString(sum);
                textBox4.Text = Convert.ToString(sum); //преобразуем число в строку
            }
            catch (FormatException)
            {
                MessageBox.Show("Неверный ввод данных");
                return;
            }
            if (textBox1.Text == "")
            {
                MessageBox.Show("Не введена сумма!");
            }
            if (textBox2.Text == "")
            {
                MessageBox.Show("Не введен процент!");
            }
            if (textBox3.Text == "")
            {
                MessageBox.Show("Не введено количество периодов!");
            }
            else
            {
                sum = Math.Round(FunctionSet.Func1, 4);
            }
        }
 
        public delegate double Func(double x);
 
        public double Raschet(Func k)
        {
            double sum = 0.0;
            double d = Convert.ToDouble(textBox1.Text);
            double p = Convert.ToDouble(textBox2.Text);
            double n = Convert.ToDouble(textBox3.Text);
            double inter = Convert.ToDouble(textBox5.Text);
            double h;
            h = n / inter; //шаг
            for (int i = 1; i <= n; i++)
            {
                sum += d * Math.Round(Math.Pow((1 + (p / 100)), n), 2);
            }
            sum += h;
            return sum;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //this.Stroi(FunctionSet.Func1);
        }
 
    public void Stroi(Func z)
    {
        Graphics g = graphWind.CreateGraphics();
        g.Clear(Color.White);
        Pen myPen = new Pen(Color.Black);
 
        int MaxX = graphWind.Width;
        int MaxY = graphWind.Height;
 
        //double d = Convert.ToDouble(textBox1.Text);
        //double p = Convert.ToDouble(textBox2.Text);
        //double n = Convert.ToDouble(textBox3.Text);
       double inter = Convert.ToDouble(textBox5.Text);
        double h = n / inter;
        int k = System.Convert.ToInt32(inter);
        double[] Xx = new double[k + 1];
        double[] Y1 = new double[k + 1];
 
        Xx[0] = 1;
 
        for (int i = 0; i < k - 1; i++)
        {
            Xx[i + 1] = Xx[i] + h;
        }
 
        Y1[0] = d;
 
        for (int i = 0; i < k - 1; i++)
        {
            Y1[i] = Xx[i];
        }
 
        double[] X = new double[k + 1];
        double[] Y = new double[k + 1];
        double Ymax = Y1[0];
        double Ymin = Y1[0];
 
        g.DrawLine(myPen, 0, 0, MaxX, 0);
        g.DrawLine(myPen, 0, 0, 0, MaxY);
 
        for (int i = 0; i < k; i++)
        {
            if (Ymax < Y1[i])
            {
                Ymax = Y1[i];
            }
            if (Ymin > Y1[i])
            {
                Ymin = Y1[i];
            }
 
        }
 
        // for (int i = 0; i < k; i++)
        // {
        //    X[i] = MaxX * (Xx[i] - a) / (b - a);
        //     Y[i] = MaxX - MaxY * ((Y1[i] - Ymin) / (Ymax - Ymin));
        // }

        for (int i = 1; i < k - 1; i++)
        {
            g.DrawLine(myPen, (float)(X[i]), (float)(Y[i]), (float)(X[i + 1]), (float)(Y[i + 1]));
            g.DrawRectangle(myPen, (float)(X[i - 1]), (float)(Y[i - 1]), (float)(h), (float)(MaxY - Y[i]));
        }
        g.Dispose();
    }

    }
}

Решение задачи: «Ошибка при расчете - "cannot convert from 'method group' to 'double'"»

textual
Листинг программы
Math.Pow((1 + (p / 100)), n)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы