|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.03.2009, 19:52 | #1 |
Пользователь
Регистрация: 26.10.2008
Сообщений: 32
|
Проблема с простейшим условием
Добрый вечер. Есть небольшая проблема, задача уже написана, осталось прикрутить только одно условие.
Текст программы: Код:
If (N<1) Or (NMAX<N) И к этому условию я еще добавил вот что: If (N<1) Or (NMAX<N) Or (B=0) Это я сделал для того, чтобы не было ошибки в этом месте: X[I]:=(X[I])*(A[K,I]+C[K])/(B*(Sqr(K))); // (На ноль делить нельзя). Программа компилируется, ввожу все данные и специально ввожу в B ноль. Жму на кнопочку чтобы все посчитало, а делфи вылетает со следующей ошибкой: Project Project.exe raised exception class EZeroDivide with message 'Floating point division by zero'. Уважаемые, прикрутите мне, пожалуйста, условие что если B=0 выводилось ShowMessage('Ошибка!'). Очень сильно жду помощи, завтра надо отчитаться по задачке =( Спасибо! |
11.03.2009, 20:15 | #2 |
Веб-разработчик
Форумчанин
Регистрация: 16.01.2008
Сообщений: 451
|
делфи всегда будет выкидывать при подобных ошибках, хоть try except допишите, попробуйте запустить exe файл программы, вот там должно все нормально обработать без ошибок винды
Я ваш новый друг, смиритесь!
|
11.03.2009, 20:41 | #3 |
Пользователь
Регистрация: 26.10.2008
Сообщений: 32
|
запустил из exe - результат тот же при вводе нуля.
Причем эта часть условия If (N<1) Or (NMAX<N) работает как нужно. А вот на ноль - нет =( |
11.03.2009, 21:51 | #4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Код:
программа — запись алгоритма на языке понятном транслятору
|
11.03.2009, 22:24 | #5 |
Пользователь
Регистрация: 26.10.2008
Сообщений: 32
|
Спасибо, исправил. Переставил строчку с вводом B перед условием =)
Код:
Вылетает 'Ошибка!', жму ок и следующее сообщение об ошибке: Floating point division by zero Видимо я как-то криво исправил =/ |
12.03.2009, 09:23 | #6 |
Заблокирован
Регистрация: 19.02.2009
Сообщений: 11
|
ПОСЛЕ ELSE BEGIN НУЖНО ДОПИСАТЬ ТАК КАК ELSE В ЭТОМ СЛУЧАЕ ТОК ДЛЯ СЛЕДУЮЩЕГО ОПЕРАТОРА РАБОТАЕТ)))
|
12.03.2009, 09:24 | #7 |
Заблокирован
Регистрация: 19.02.2009
Сообщений: 11
|
Else begin
P:=StrToFloat (EditP.Text); For I:=1 To N Do For K:=1 To N Do Begin A[I,K]:=StrToFloat(StringGridA.cells [K-1, I-1]); C[i]:=StrToFloat(StringGridC.cells [0, I-1]); End; S:=0; For I:=1 To N Do S:= S + A [I, I]; For I:=1 To N Do Begin X[i]:=1; For K:=1 To N Do X[i]:=(X[i])*(A[K,I]+C[K])/(B*(Sqr(K))); X[i]:=S*P*(X[i]); End; For I:=1 To N Do StringGridX.Cells[0, I-1]:=FloatTOStr(X[i]); end; end; |
13.03.2009, 18:23 | #8 |
Пользователь
Регистрация: 26.10.2008
Сообщений: 32
|
Всем спасибо, правда я не дождался последнего примера, сделал сам по другому, в общем вот так работает вроде))):
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с условием. | Stager | Общие вопросы C/C++ | 4 | 13.01.2009 02:01 |
Помогите сцепить ячейки с определенным условием | 7erge | Microsoft Office Excel | 4 | 23.07.2008 09:47 |
Создать выражение для запроса с условием | smoky | Microsoft Office Access | 3 | 13.05.2008 21:39 |
Помогите с Условием | memoze | Microsoft Office Excel | 7 | 22.02.2008 15:23 |
Проблемы с циклом, условием | Иринкаа | Помощь студентам | 13 | 19.11.2007 23:33 |