|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.04.2008, 00:37 | #1 |
Регистрация: 16.03.2008
Сообщений: 5
|
VB6. Программа зависает при выполнении.
Здравствуйте!
Пишу программу на VB6. Тема: вычиление определенных интегралов. Вроде написала чтото, все логично, продуманно. Но возникла проблема. Я в вижу нижний предел интегрирования,верхний,....нажимаю кнопку.........и комп зависает, приложение не отвечает....спасает ctrl-alt-del что делать? почему так происходит? вот мой код? Кто захочет помочь но ничего из кода не поймет,могу прислать проект. Спасибо Вам заранее. Вот мой код: Option Explicit Sub Command4_Click() Call Shell("NOTEPAD.EXE C:\Documents and Settings\Настёна\Рабочий стол\КР\О программе.txt") End Sub Private Sub cmdexit_click() End End Sub Private Sub Command3_Click() Dim A As Double Dim B As Double Dim Eps As Double Dim S As Double A = Val(Text1.Text) B = Val(Text2.Text) Eps = Val(Text4.Text) S = Trap(A, B, Eps) MsgBox ("Интеграл от a=" & Format(A, "000.00") & " до b=" & Format(B, "000.00") & " равен " & Format(S, "000.00")) End Sub Private Function F(ByVal X As Double) As Double F = X * X * X + 2 * (X * X) - 3 * X - 8 End Function Private Function Trap(ByVal A As Double, ByVal B As Double, ByVal Eps As Double) As Double Dim H As Double Dim S As Double Dim S0 As Double Dim S1 As Double Dim Sn As Double Dim I As Integer Dim N As Integer S = 1 Sn = 101 N = 4 S0 = (F(A) + F(B)) / 2 S1 = F((A + B) / 2) Do While (Math.Abs(S - Sn) > Eps) Sn = S H = (B - A) / N I = 0 Do While I < N / 2 S1 = S1 + F(A + (2 * I + 1) * H) Loop S = H * (S0 + S1) N = N * 2 Loop Trap = S End Function |
02.04.2008, 03:02 | #2 |
Пользователь
Регистрация: 04.03.2008
Сообщений: 75
|
Помойму проблема вот тут:
Код:
Если исправить это, то в дальнейшем может возникнуть проблема в предпоследней строчке - Trap = S, переменная trap у вас не объявлена, и её нужно обьявить, но так как она нигде не используется, то эту строчку можно просто удалить. ps: краткий ответ: проблема заключается в том, что Do While I < N / 2 уходит в цикл, изза того что I всегда меньше N (I=0, N=4). |
03.04.2008, 00:06 | #3 |
Регистрация: 16.03.2008
Сообщений: 5
|
..дааа...точно.... i=i+1........
спасибо большое вам!))))))) теперь все работает!! а можно еще вопросик: вот смотрите, я создала функцию F, в которой могу вводить разные функции , которые впоследствии у меня выступают подынтегральными выражениями. А могу ли я как -нить так сделать, чтобы функцию не задавать внутри программы, а вводить с клавиатуры? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
После подключения dll комп зависает!!! | Irat | Помощь студентам | 1 | 07.02.2008 21:18 |
Пауза в выполнении программы | Иллидан | Общие вопросы Delphi | 6 | 24.01.2008 16:56 |
Странная ошибка при выполнении | okolobaxa | Общие вопросы Delphi | 2 | 03.07.2007 00:47 |
Ошибка при выполнении запроса | Elena | БД в Delphi | 3 | 14.06.2007 15:13 |
Ошибка при выполнении запроса | Elena | БД в Delphi | 2 | 25.05.2007 16:19 |