Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
0 / 0 / 1
Регистрация: 18.10.2010
Сообщений: 40
.NET 4.x

Вычислитель интеграла, приложенный код работает некорректно

12.01.2012, 05:07. Показов 4572. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ребят подскажите как сделать в коде отлов ошибок а то не пашет, сделать так чтобы до нажатия кнопки "запуск" все было неактивно, кнопку на туллстринге(+код соответственно) "очистить" введенные данные
Вложения
Тип файла: zip Reshenie Integrala (Metod Trapecii).zip (63.2 Кб, 33 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2012, 05:07
Ответы с готовыми решениями:

Заполнение массива из TextBox, приложенный код работает некорректно
пишу программу, которая позволяет ввести массив через TextBox, n - размер массива mas - сам массив в чем ошибка формирования массива?...

Запись в файл, код работает некорректно
StreamWriter sw; // объект потока для записи StringBuilder builder; // построитель строк builder = new...

Вывод индекса элемента массива, код работает некорректно
задается массив от -20 до 20 должен выводить индекс выбранного числа или же сообщение что "искомого элемента нет" выдается...

36
Амурчанка
 Аватар для tantemka
136 / 136 / 44
Регистрация: 07.11.2011
Сообщений: 279
12.01.2012, 23:37
Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(Char.IsDigit(e.KeyChar)) &&!((e.KeyChar==',') &&(textBox1.Text.IndexOf(",")==-1) && (textBox1.Text.Length!=0)))
                if (e.KeyChar != (char)Keys.Back)
                {
                    e.Handled = true;
                }
        }
Будут печататься только цифры и 1 раз запятая
P.S. значения записывают то в textBox)
1
0 / 0 / 1
Регистрация: 18.10.2010
Сообщений: 40
12.01.2012, 23:49  [ТС]
tantemka, к каждому текст боксу это добавить надо?
0
Амурчанка
 Аватар для tantemka
136 / 136 / 44
Регистрация: 07.11.2011
Сообщений: 279
13.01.2012, 00:01
да, к каждому.

Добавлено через 4 минуты
Вообще проверить ввод цифр можно еще так:
C#
1
2
3
4
5
6
float inp;
            if (float.TryParse(textBox1.Text, out inp)
             {
                   // какой-то код
              }
            else MessageBox.Show("Введите положительное число!", "название программы", MessageBoxButtons.OK, MessageBoxIcon.Warning);
1
0 / 0 / 1
Регистрация: 18.10.2010
Сообщений: 40
13.01.2012, 00:04  [ТС]
Цитата Сообщение от tantemka Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(Char.IsDigit(e.KeyChar)) &&!((e.KeyChar==',') &&(textBox1.Text.IndexOf(",")==-1) && (textBox1.Text.Length!=0)))
                if (e.KeyChar != (char)Keys.Back)
                {
                    e.Handled = true;
                }
        }
Будут печататься только цифры и 1 раз запятая
P.S. значения записывают то в textBox)
не катит, ошибка "Ошибка 1 "Reshenie_Integrala__Metod_Trapecii_.For m1" не содержит определения для "textBox1_TextChanged" и не был найден метод расширения "textBox1_TextChanged", принимающий тип "Reshenie_Integrala__Metod_Trapecii_.For m1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) C:\Users\Давид\Desktop\Reshenie Integrala (Metod Trapecii)\Reshenie Integrala (Metod Trapecii)\Form1.Designer.cs 107 71 Reshenie Integrala (Metod Trapecii)
"
0
Амурчанка
 Аватар для tantemka
136 / 136 / 44
Регистрация: 07.11.2011
Сообщений: 279
13.01.2012, 00:08
А в событиях вы указывали?
Миниатюры
Вычислитель интеграла, приложенный код работает некорректно  
1
0 / 0 / 1
Регистрация: 18.10.2010
Сообщений: 40
13.01.2012, 00:23  [ТС]
tantemka, теперь да)

Добавлено через 3 минуты
осталось как то решить вопрос с решением самого интеграла методом трапеций и что для этого нужно)))
0
Амурчанка
 Аватар для tantemka
136 / 136 / 44
Регистрация: 07.11.2011
Сообщений: 279
13.01.2012, 00:41
Я в лабораторной использовала метод прямоугольников, как-то на трапеции меня не хватило. Ни времени, ни желания особо не было да и не требовалось. А уж проверять написанный алгоритм вручную на листике абсолютно не хотелось, так как нужно не просто вывести ответ, а еще и погрешность написать.
Если сам интеграл считать, то:
Миниатюры
Вычислитель интеграла, приложенный код работает некорректно  
0
Амурчанка
 Аватар для tantemka
136 / 136 / 44
Регистрация: 07.11.2011
Сообщений: 279
13.01.2012, 00:43
Для погрешности хуже надо вторую производную знать и ее максимальное значение на отрезке интегрирования
0
0 / 0 / 1
Регистрация: 18.10.2010
Сообщений: 40
13.01.2012, 00:57  [ТС]
tantemka, a) найти определенные интегралы от следующих функций:
1)
2)
3)
4)
б) выбрать метод, каким он хочет найти определенный интеграл от этой функции;
в) ввести с клавиатуры пределы интегрирования и количество интервалов разбиения (a, b и n);
г) увидеть результат вычислений на экране в удобном для восприятия виде с отображением графика функции, на введенном с клавиатуры отрезке.
При помощи данной программы нетрудно будет сравнить результаты вычислений одного и того же определенного интеграла найденные разными методами.
Программа должна отвечать следующим требованиям:
a) иметь простой интерфейс;
б) иметь защиту от некорректно введенных данных.
Актуальность реализации программы на компьютере заключается в простом использовании и возможности доработки дизайна и программного кода.





Теоретическая часть
Итак, что же такое определенный интеграл? И какими методами мы будем его вычислять?
Определенным интегралом функции f(x), взятом в интервале от a до b, называется предел, к которому стремится интегральная сумма при стремлении всех промежутков к нулю:

Проще говоря, для того чтобы найти определенный интеграл на заданном отрезке [a, b], мы разбиваем этот отрезок на n необязательно равных частей точками деления , положа , в результате чего получаем разбиение отрезка [a, b] составленное из отрезков [ ] при i = 1, …, n. Суммарная площадь узких полосок, лежащих над отрезками разбиения [ ] и будет искомым нами определенным интегралом (см. рис.1).

Рис.1. Вычисление определенного интеграла
Теперь вы знаете для чего нужно вводить a, b и n.
Как было сказано выше, для вычисления определенных интегралов существует ряд формул для приближенного вычисления. Нас интересуют формулы прямоугольников, трапеций и парабол (Симпсона).
1) Метод прямоугольников: В методе прямоугольников суммируется не площадь узких полосок, лежащих над отрезками разбиения [ ], а площади прямоугольников (см. рис.2).

Рис.2. Метод прямоугольников
Сама формула прямоугольников выглядит следующим образом:

где h — это шаг, вычисляемый по формуле , a , где i = 1, 2, …, n.
2) Метод трапеций: В методе трапеций суммируется площадь трапеций, лежащих над отрезками разбиения [ ], параллельными основаниями которых служат отрезки, задающие значения функции в концах промежутка, то есть и (см. рис.3).

Рис.3. Метод трапеций

Формула трапеций выглядит следующим образом:

2) Метод парабол (Симпсона): Интеграл вычисляется по формуле:

Именно с помощью этих формул моя программа и вычисляет определённые интегралы.

Описание структуры программы
Программа представляет собой одну форму с расположенными на ней элементами (см. рис. 4):
1) семь элементов типа RadioButton для выбора функций и методов;
2) четыре элемента типа TextBox: три для ввода значений, один для вывода результата;
3) две кнопки (элементы типа Button): одна для вычисления («Результат»), другая для остановки работы программы («Выход»);
4) одна панель для рисования графика (элемент типа Panel).

















Рис.4. Рабочая форма
Для запуска программы пользователю необходимо выбрать одну из четырех функций, выбрать метод, которым он хочет вычислить определенный интеграл от этой функции, ввести с клавиатуры пределы интегрирования и количества интервалов разбиения (a, b и n), после этого нужно нажать на кнопку «Результат».
В программе легко разобраться, но пользователь может легко ввести некорректные значения a, b и n, если он не знает теории. Значение a < b, а n > 0. В случае совершения пользователем ошибки вместо результата он увидит предупреждение.
Блок–схема программы
Далее представлена глобальная блок–схема программы (см. рис. 5).



Рис.5. Глобальная блок–схема

Блок–схема фрагмента программы
Нижеприведенная блок–схема описывает алгоритм вычисления определенного интеграла методом прямоугольников (см. рис. 6).



Рис.6. Блок–схема фрагмента программы

Листинг программы
Вычисление определенного интеграла методом прямоугольников
double a, b, n, h, sum = 0, xi;
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
n = Convert.ToInt32(textBox3.Text);
h = (b - a) / n;
for (int i = 0; i < n; i++)
{
xi = a + i * h;
sum += Convert.ToDouble(Math.Exp(Math.Sin(xi + h / 2)));
}
res = sum * h;
textBox4.Text = Convert.ToString(res);

Вычисление определенного интеграла методом трапеций
double a, b, n, h, sum = 0, xi, xi1;
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
n = Convert.ToInt32(textBox3.Text);
h = (b - a) / n;
for (int i = 0; i < n; i++)
{
xi = a + i * h;
xi1 = a + (i + 1) * h;
sum += Convert.ToDouble(Math.Exp(Math.Sin(xi)) + Math.Exp(Math.Sin(xi1)));
}
res = sum * h / 2;
textBox4.Text = Convert.ToString(res);


Вывод
Итогом данной курсовой работы является программа, реализованная на языке C#, с помощью которой вычисляются определенные интегралы на заданном пользователем отрезке [a, b], разбитом на n равных частей с наглядным графиком функции от которой считается определенный интеграл, построенной на этом отрезке [a, b].
В качестве перспектив развития данной программы можно отметить такие нереализованные возможности как самостоятельный ввод пользователем нужной ему функции, расширение списка методов вычисления определенных интегралов, а так же визуальное улучшение интерфейса программы.


теперь осталось пересадить на форму этот код и будет целыХ два способа решения
0
Амурчанка
 Аватар для tantemka
136 / 136 / 44
Регистрация: 07.11.2011
Сообщений: 279
13.01.2012, 01:05
Давид Монтиков, камень в ваш огород. У вас есть шаг и n. По идее вводите n, а вот значение шага сами должны выводить в textbox или куда-нибудь еще
0
0 / 0 / 1
Регистрация: 18.10.2010
Сообщений: 40
13.01.2012, 01:26  [ТС]
tantemka, ну будем пытатся, жаль тут полный листинг не привели
0
Амурчанка
 Аватар для tantemka
136 / 136 / 44
Регистрация: 07.11.2011
Сообщений: 279
13.01.2012, 01:29
Давид Монтиков, вам бы мед да ложками. Сам принцип расчета интегралов есть и это главное. В свой код вставить не так проблематично. Кроме того, языки хотя бы одинаковые и переводить ничего не нужно
0
0 / 0 / 1
Регистрация: 18.10.2010
Сообщений: 40
13.01.2012, 01:36  [ТС]
tantemka, на медовую и шоколадную продукцию аллергия, "мечтательное" замечание по поводу листинга)))

Добавлено через 2 минуты
tantemka, просто код решения как будто под консоль сделан, а прога на форме вроде
0
Амурчанка
 Аватар для tantemka
136 / 136 / 44
Регистрация: 07.11.2011
Сообщений: 279
13.01.2012, 01:42
C#
1
2
3
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
n = Convert.ToInt32(textBox3.Text);
где же тут консоль?
Тут в консольке сделан метод прямоугольников
Вложения
Тип файла: rar Integral.rar (42.8 Кб, 13 просмотров)
0
0 / 0 / 1
Регистрация: 18.10.2010
Сообщений: 40
13.01.2012, 01:50  [ТС]
tantemka, все равно, кода два кусочка а в форме вон еще разные формулы указаны, жесть)
Миниатюры
Вычислитель интеграла, приложенный код работает некорректно  
0
Амурчанка
 Аватар для tantemka
136 / 136 / 44
Регистрация: 07.11.2011
Сообщений: 279
13.01.2012, 01:58
C#
1
2
3
4
5
6
7
8
9
10
11
12
double a, b, n, h, sum = 0, xi;
a = Convert.ToInt32(textBox1.Text);
b = Convert.ToInt32(textBox2.Text);
n = Convert.ToInt32(textBox3.Text);
h = (b - a) / n;
for (int i = 0; i < n; i++)
{
xi = a + i * h;
sum += Convert.ToDouble(Math.Exp(Math.Sin(xi + h / 2)));
}
res = sum * h;
textBox4.Text = Convert.ToString(res);
В присвоении данных переменным ничего сверхъестественного нету. А вот цикл для каждой функции будет разным. Просто программа позволяет считать разные интегралы разными методами )))

Добавлено через 2 минуты
Еще и картинка формы есть))) Мне бы так порой для каждой курсовой, кусок кода и картинка
0
0 / 0 / 1
Регистрация: 18.10.2010
Сообщений: 40
13.01.2012, 02:06  [ТС]
tantemka, да ну, просто тупняк страшный напал, в прошлом семестре за пару курсач сделал, правда тема легче и интересней как то была
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.01.2012, 02:06

Что делает приложенный код
Всем привет!) Скажите пожалуйста, что реализует данный код int min = 32000; int max = 0; int mind = 0; ...

Какие функции выполняет приложенный код
namespace WinRare { class Program { public static void Main() { backgroundWorker1 = new...

Адресная книга в консоли - как улучшить приложенный код
Вот задание: Во всех вариантах предусматривается вначале создание какого-то алгоритма обработки заданной сущности (например, разбор...

Массовая рассылка СМС внутри компании, как реализовать, переведя приложенный код на C#
Всем привет. Решил заключить контракт с бизнес лайфом, и они мне прислали занимательный скрипт, который помог бы мне делать массовую...

Некорректно работает код
Задача такая: создать страницу содержащуюю input type=&quot;text&quot;. Введенное пользователем число в этот input должно передаваться с помощью Ajax...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru