Долго выполняется программа и зависает - C#

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

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

Программа на C# долго выполняется и зависает при вводе eps вот код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            if (textBox2.Text.Length == 0 && textBox3.Text.Length == 0)
            {
                button1.Enabled = false;
            }
            else
                button1.Enabled = true;
        }
 
        private void label2_Click(object sender, EventArgs e)
        {
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            var eps = Convert.ToDouble(textBox3.Text);
            var x = Convert.ToDouble(textBox2.Text);
 
            Sum(x, eps);
 
            Sin(x);
 
        }
 
        private void texBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (textBox2.Text.Length == 0)
                button1.Enabled = false;
            else
                button1.Enabled = true;
        }
 
        private void texBox3_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (textBox3.Text.Length == 0)
                button1.Enabled = false;
            else
                button1.Enabled = true;
        }
 
        public double Sum(double x, double eps)
        {
            //double epsilon = 1e-6;
            double sum = 0;
            int n = 1;
            double numerator = Math.Pow(-1 * x, 2);
            double Factorial = ((2 * n) + 2) * ((2 * n) + 3);
            double coefNumerator = -x * x;
            double lastSummand;
 
            do
            {
                lastSummand = numerator / Factorial;
 
                sum += lastSummand;
                numerator *= coefNumerator;
                n += 2;
            }
            while (Math.Abs(lastSummand) > eps);
 
            label8.Text = " " + sum;
            label7.Text = " " + n;
 
            return sum; 
        }
 
        public double Sin(double x)
        {
            double sin = Math.Sin(x);
 
            label6.Text = " " + sin;
 
            return sin;
        }
 
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
            button1.Enabled = (!String.IsNullOrEmpty(textBox2.Text) && !String.IsNullOrEmpty(textBox3.Text));
        }
    }
}

Решение задачи: «Долго выполняется программа и зависает»

textual
Листинг программы
do { lastSummand = numerator / Factorial; sum += lastSummand; numerator *= coefNumerator; n += 2; } while (Math.Abs(lastSummand) > eps);

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


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

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

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