Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.02.2023
Сообщений: 16

Не грузит Windows Form

18.02.2023, 06:47. Показов 789. Ответов 10

Студворк — интернет-сервис помощи студентам
Добрый день. Подскажите пожалуйста. В чём может быть проблема. Нужно чтобы решалось уравнение(скину фото ниже). Я написал код(тоже скину ниже). Вроде бы всё должно работать. Вылазит формочка, я ввожу данные, но как нажимаю кнопку «Вычислить». После этого Visual Studio просто зависает. Приходится выключать его через диспетчер задач. Пробовал написать то же самое создав всё заново, но проблема не исчезла. В коде вроде бы всё впорядке, но почему тогда зависает? Спасибо большое заранее
Миниатюры
Не грузит Windows Form   Не грузит Windows Form   Не грузит Windows Form  

Не грузит Windows Form  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2023, 06:47
Ответы с готовыми решениями:

Как мне собрать и открыть Windows Form приложение в Windows XP?
Есть приложение WindowsForm C# .Net Framework 3.5 SP с SQL таблицами. Как мне собрать и открыть это приложение в Windows XP. Setup Project...

Конфигурация windows form и unity 3D, вызов Uniry из windows form
Существует форма, на ней кнопка, при нажатии на кнопку происходит открытие полноценной игры на движке Unity3. Смотрел что можно сделать...

Создать win form, используя шаблон windows form в clr, однако такого шаблона на моей студии 2013 нет
есть необходимость создать win form используя шаблон windows form в clr, однако такого шаблона на моей студии 2013 не обнаружено ... :(

10
fly
 Аватар для I can
4955 / 4644 / 844
Регистрация: 13.04.2015
Сообщений: 9,840
18.02.2023, 07:02
Цитата Сообщение от melnikowww Посмотреть сообщение
почему тогда зависает
Условие while всегда выполняется.

Добавлено через 3 минуты
C#
1
while(x>=xk-dx/2)
0
0 / 0 / 0
Регистрация: 17.02.2023
Сообщений: 16
18.02.2023, 07:39  [ТС]
Спасибо большое, но к сожалению то же самое. Но вот если в Xk Записать не двухзначное, а трёхзначное число, то появится просто надпись, которая должна появляться вместе с решением как на фотографии, которую я скинул
Миниатюры
Не грузит Windows Form   Не грузит Windows Form  
0
fly
 Аватар для I can
4955 / 4644 / 844
Регистрация: 13.04.2015
Сообщений: 9,840
18.02.2023, 07:52
Цитата Сообщение от melnikowww Посмотреть сообщение
а трёхзначное число
На хрена? Условие написано конкретно для твоих данных, когда цикл идёт от большего к меньшему.
Можно написать универсальное.

И не надо выкладывать код в виде картинок, здесь не форум фотошопа.

Добавлено через 2 минуты
Цитата Сообщение от melnikowww Посмотреть сообщение
к сожалению то же самое
Не свисти. Разве форма по прежнему зависает ?
0
Эксперт .NET
 Аватар для Rius
13164 / 7724 / 1679
Регистрация: 25.05.2015
Сообщений: 23,526
Записей в блоге: 14
18.02.2023, 07:53
Не касаясь правильности расчёта.

Чтобы не зависало, надо писать не так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Windows.Forms;
 
namespace melnikowww
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, System.EventArgs e)
        {
            double x0 = Convert.ToDouble(textBox1.Text);
            double xk = Convert.ToDouble(textBox2.Text);
            double dx = Convert.ToDouble(textBox3.Text);
            double b = Convert.ToDouble(textBox4.Text);
            textBox5.Text = "Работу выполнил студент";
 
            double x = x0;
 
            while (x <= (x + dx / 2))
            {
                double y = x + Math.Sqrt(Math.Abs(Math.Pow(x, 3) + b - Math.Exp(x)));
                textBox5.Text += "x=" + Convert.ToString(x) + "; y= " + Convert.ToString(y) + Environment.NewLine;
                x = x + dx;
            }
        }
    }
}
А вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace melnikowww
{
    public partial class Form1 : Form
    {
        private readonly CancellationTokenSource tokenTotal = new CancellationTokenSource();
        private CancellationTokenSource tokenLocal;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private async void button1_Click(object sender, EventArgs e)
        {
            if (tokenLocal is null)
            {
                tokenLocal = CancellationTokenSource.CreateLinkedTokenSource(tokenTotal.Token);
 
                var x0 = Convert.ToDouble(textBox1.Text);
                var xk = Convert.ToDouble(textBox2.Text);
                var dx = Convert.ToDouble(textBox3.Text);
                var b = Convert.ToDouble(textBox4.Text);
 
                try
                {
                    IProgress<string> progress = new Progress<string>(x => textBox5.Text += x);
 
                    await Task.Run(() => Solve(
                        tokenLocal.Token,
                        x0,
                        xk,
                        dx,
                        b,
                        progress));
                }
                catch (TaskCanceledException taskCanceledException)
                {
                    textBox5.Text += "\r\nTask cancelled";
                    throw;
                }
                catch (Exception exc)
                {
                    textBox5.Text += "\r\n" + exc.Message;
                }
                finally
                {
                    tokenLocal = null;
                }
            }
            else
            {
                tokenLocal?.Cancel();
            }
        }
 
        private void Solve(
            CancellationToken token,
            double x0,
            double xk,
            double dx,
            double b,
            IProgress<string> progress)
        {
            var x = x0;
            progress.Report("Работу выполнил студент");
 
            while (x <= x + dx / 2)
            {
                token.ThrowIfCancellationRequested();
 
                var y = x + Math.Sqrt(Math.Abs(Math.Pow(x, 3) + b - Math.Exp(x)));
                progress.Report($"x={x}; y= {y}\r\n");
                x = x + dx;
                Thread.Sleep(10);
            }
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            tokenTotal.Cancel();
        }
    }
}
Цитата Сообщение от melnikowww Посмотреть сообщение
то появится просто надпись
Цикл не выполнился. Проверяйте, что вы накодили.
1
fly
 Аватар для I can
4955 / 4644 / 844
Регистрация: 13.04.2015
Сообщений: 9,840
18.02.2023, 08:00
C#
1
while(Math.Abs(x)<=Math.Abs(xk+dx/2))
Добавлено через 6 минут
Цитата Сообщение от Rius Посмотреть сообщение
А вот так:
Так программа будет бесконечно считать, но зато "висеть" не будет? Ничем не лучше.
0
Эксперт .NET
 Аватар для Rius
13164 / 7724 / 1679
Регистрация: 25.05.2015
Сообщений: 23,526
Записей в блоге: 14
18.02.2023, 08:11
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>
Цитата Сообщение от Rius Посмотреть сообщение
Не касаясь правильности расчёта.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<

Это для других программ, который ТС ещё понапишет на своих практиках.

Добавлено через 9 минут
И да, это лучше. Тем, что ТС увидит, что программа что-то считает, а не висит.
Надо заменить 31 строку на
C#
1
IProgress<string> progress = new Progress<string>(x => textBox5.AppendText(x));
И уж намного лучше трудуэвентса.
1
0 / 0 / 0
Регистрация: 17.02.2023
Сообщений: 16
18.02.2023, 08:44  [ТС]
не форум фотошопа, но причём здесь универсальность. В условии разберитесь, потом свистите всякий бред. Специально для вас выкладываю "Скриншот" ошибки
Миниатюры
Не грузит Windows Form  
0
0 / 0 / 0
Регистрация: 17.02.2023
Сообщений: 16
18.02.2023, 08:44  [ТС]
спасибо
0
Эксперт .NET
 Аватар для Rius
13164 / 7724 / 1679
Регистрация: 25.05.2015
Сообщений: 23,526
Записей в блоге: 14
18.02.2023, 08:49
Цитата Сообщение от melnikowww Посмотреть сообщение
Специально для вас выкладываю "Скриншот" ошибки
В русской локали запятая является разделителем. А точка - в английской.
1
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
18.02.2023, 12:13
Можно вот так, со всеми проверками:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Windows.Forms;
 
namespace WindowsFormsApp15
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Text = "Табулирование функций";
        }
 
        private double y(double x, double a) => x + Math.Sqrt(Math.Abs(x * x * x + a - Math.Exp(x)));
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (!double.TryParse(textBox1.Text, out double x0) ||
                !double.TryParse(textBox2.Text, out double xk) ||
                !double.TryParse(textBox3.Text, out double dx) ||
                !double.TryParse(textBox4.Text, out double a))
            {
                throw new Exception("Ошибка ввода данных!");
            }
            if ((x0 > xk && dx > 0) || (x0 < xk && dx < 0))
            {
                throw new Exception("Конечная точка недостижима!");
            }
            textBox5.Text = "Работу выполнил студент: \r\n";
            double x = x0;
            while ((x <= xk && dx > 0) || (x >= xk && dx < 0))
            {
                textBox5.AppendText($"x = {x,4:0.0};  y = {y(x, a):F6}\r\n");
                x += dx;
            }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.02.2023, 12:13
Помогаю со студенческими работами здесь

Запуск Windows Form Applications на машине с ранними версиями Windows/.Net
Помогите решить проблему, есть приложение WFA написанное на VB.NET Framework 4.0, это приложение необходимо запускать на различных машинах...

Перевод кода из Windows Form в Universal App для Windows 8.1
Добрый вечер. Нужна помощь. Есть игра написанная в C# Windows Form, необходимо перевести код в Blank App Universal Windows 8.1. Может кто...

Ошибка при создании приложения windows form на Windows 7
На windows 8 без проблем работал, решил поставить 7-ку и возникла ошибка . Читал что проблема может быть в net.framework. ...

Windows Form запускается не на всех версиях Windows
Всех приветствую! Случился такой конфуз, сделал лабораторную про программированию, проверил на своём компе, ноуте (Win10), на рабочем...

Не грузит Windows
Здравствуйте, вчера после запуска игры компьютер завис со статичными полосами на экране, пришлось удержывать кнопку выключения, после чего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru