Программа не отвечает после нажатия кнопки - PullRequest
0 голосов
/ 26 ноября 2018

Я знаю, что это не красиво, но я все еще новичок в программировании.После ввода n1, n2 и n3 и нажатия кнопки «вычислить» форма получает «Программа не отвечает»

, это происходит как в режиме отладки, так и в режиме выпуска, и у меня нет видимых сообщений об ошибках. Кто-нибудь может мне помочь?он назначен завтра, и сейчас я не вижу исправления, поэтому любая помощь очень ценится.

Если вам нужна копия кода для проверки, пришлите мне в личку.

С уважением.Матиас

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 I3_REVISI
{
    public partial class Newton : Form
{
    public static double n1, n2, n3, x_NEWTON, Initialization, x1, approx1, approx2, approx3, approx4, approx5, approx6;
    public Newton()
    {
        InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form1 f1 = new Form1();
        f1.Show();
        this.Hide();
    }

    private void label1_Click(object sender, EventArgs e)
    {

    }

    private void textBox4_TextChanged(object sender, EventArgs e)
    {

    }

    private void textBox8_TextChanged(object sender, EventArgs e)
    {

    }

    private void textBox7_TextChanged(object sender, EventArgs e)
    {

    }

    private void textBox11_TextChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {

        textBox6.Text = "";
        textBox10.Text = "";
        textBox13.Text = "";
        textBox3.Text = "";
        Newton1.Text = "";
    }

    private void button3_Click(object sender, EventArgs e)
    {
        n1 = Convert.ToDouble(textBox6.Text);
        n2 = Convert.ToDouble(textBox10.Text);
        n3 = Convert.ToDouble(textBox13.Text);
        // Initialization If value is positive the start value is xinitialization -1 f(0) = xinitialization-1

        for (x_NEWTON = 0; x1 >= 0; x_NEWTON++)
        {
            x1 = n1 * Math.Pow(x_NEWTON, 2) + n2 * x_NEWTON + n3;
            Initialization = x1 - 1;
        }

        // Formula:   x1 = x0 - ( f(x0) / f'(x0) )
            approx1 = Initialization - ((n1*Math.Pow(Initialization,2)+n2*Initialization+n3) / (n1*2*Initialization-n2));
        approx2 = approx1 - ((n1 * Math.Pow(approx1, 2) + n2 * approx1 + n3) / (n1 * 2 * approx1 - n2));
        approx3 = approx2 - ((n1 * Math.Pow(approx2, 2) + n2 * approx2 + n3) / (n1 * 2 * approx2 - n2));
        approx4 = approx3 - ((n1 * Math.Pow(approx3, 2) + n2 * approx3 + n3) / (n1 * 2 * approx3 - n2));
        approx5 = approx4 - ((n1 * Math.Pow(approx4, 2) + n2 * approx4 + n3) / (n1 * 2 * approx4 - n2));
        approx6 = approx5 - ((n1 * Math.Pow(approx5, 2) + n2 * approx5 + n3) / (n1 * 2 * approx5 - n2));

        Newton1.Text = ("" + approx6);

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void textBox10_TextChanged(object sender, EventArgs e)
    {

    }
}
}

1 Ответ

0 голосов
/ 26 ноября 2018
  1. проверьте ваш тип данных входного значения и предотвратите входную строку или значение, чтобы вызвать сбой вашей формулы, такой как деление на ноль
  2. измените индекс цикла for со значения на меньше, чем tan значение

    для (int i = 0; i <10) </p>

  3. и держите ваш код в блоке try catch и передайте параметр исключения, чтобы увидеть вашу ошибку.

    try
    {
        n1 = Convert.ToDouble(textBox6.Text);
        n2 = Convert.ToDouble(textBox10.Text);
        n3 = Convert.ToDouble(textBox13.Text);
        f(0) = xinitialization-1;
    
        for (x_NEWTON = 0; x1 >= 0; x_NEWTON++)
        {
            x1 = n1 * Math.Pow(x_NEWTON, 2) + n2 * x_NEWTON + n3;
            Initialization = x1 - 1;
        }
    
            approx1 = Initialization - ((n1*Math.Pow(Initialization,2)+n2*Initialization+n3) / (n1*2*Initialization-n2));
        approx2 = approx1 - ((n1 * Math.Pow(approx1, 2) + n2 * approx1 + n3) / (n1 * 2 * approx1 - n2));
        approx3 = approx2 - ((n1 * Math.Pow(approx2, 2) + n2 * approx2 + n3) / (n1 * 2 * approx2 - n2));
        approx4 = approx3 - ((n1 * Math.Pow(approx3, 2) + n2 * approx3 + n3) / (n1 * 2 * approx3 - n2));
        approx5 = approx4 - ((n1 * Math.Pow(approx4, 2) + n2 * approx4 + n3) / (n1 * 2 * approx4 - n2));
        approx6 = approx5 - ((n1 * Math.Pow(approx5, 2) + n2 * approx5 + n3) / (n1 * 2 * approx5 - n2));
    
        Newton1.Text = ("" + approx6);
    }
    catch (exception ex)
    {
        messagebox.show(ex.message);
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...