![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Искатель |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Здравствуйте!
С вашего позволения попрошу у вас совета в решении такой проблемы: Моя программа (в Делфи), вычисляет корни квадратного уравнения. Я затрудняюсь с добавлением этой проверки: if d=0 then... Подскажите, как правильно это вписать? И если можно, помогите с кнопочкой "Очистка", не представляю как её запрограммировать. Прикрепленные файлы ![]() |
-TarasBer- |
![]()
Сообщение
#2
|
Гость ![]() |
Я просмотрел код unit1.pas в блокноте, ничего не понял.
Что за Button1, Edit1? Почему нельзя давать компонентам человеческие имена? Проверка на то, что дискриминант нулевой, выглядит так: if abs(d) < eps then ... В качестве eps напиши что-то типа 1E-10 Это всё (вместо простого сравнения с нулём) из-за того, что погрешности вычислений могут привести к некоторому отклонению. Короче, прямо сравнивать вещественные числа нельзя. Очистка что должна делать? Если очищать поля ввода, то просто пиши labelResult.Caption := ''; |
Искатель |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Спасибо!
Я в корне переделал код программы (это требование преподавателя!). Она сделана на трёх формах и вроде бы работает. Не пойму только, почему вычисляет результаты неправильно. Подскажите, пожалуйста, есть в ней ошибка? Прикрепленные файлы ![]() |
Гость |
![]()
Сообщение
#4
|
Гость ![]() |
Ну блин.
((-b)+Sqrt(D))/2*a Вот везде скобок наставил, кроме там, где нужно. (-b+Sqrt(D))/(2*a) И назови компоненты нормально (поле Name). |
-TarasBer- |
![]()
Сообщение
#5
|
Гость ![]() |
Да у тебя вообще в обработчике кнопки логика неверная.
Если дискриминант меньше нуля, то зачем показывать вторую форму? И зачем показывать форму до изменения её содержимого? Поменяй тот кусок на
if D<0 then form3.show
else begin
form2.panel1.caption:=FloatTostr(((-b)+Sqrt(D))/(2*a));
if abs(D) < 1E-9 then form2.panel2.caption:= ''
else form2.panel2.caption:=FloatTostr(((-b)-Sqrt(D))/(2*a));
form2.show;
end;
|
Искатель |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Черт побери! До чего же приятно иметь дело с профессионалами!!! Супер! Работает как надо!
Уважаемые профи! Ну не понимаю я смысл этой строки, хоть убей: if abs(D) < 1E-9 then form2.panel2.caption:= ''. Если преподаватель будет спрашивать что означает сие, мне останется только блеять или мычать. Объясните, пожалуйста |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата мне останется только блеять или мычать Не надо ни мычать, не блеять... Из-за погрешности представления вещественных чисел (Гугл знает об этом, если что), нельзя два вещественных числа сравнивать напрямую (оператором "="). Нужно проверить, не превышает ли модуль их разности некоего маленького значения. Вот ты и проверяешь модуль дискриминанта: если он меньше одной миллиардной (10-9), то можно в данном случае его считать нулем. |
Искатель |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Спасибо! Если что, так и объясню. Представляю какие глаза будут у препода! Думаю он про это не знает!
|
Искатель |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Класс
|
TarasBer |
![]()
Сообщение
#10
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Так вставило, что до сих пор не отпустило?
-------------------- |
Искатель |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Да нет, извините. Не в этом дело. Просто в одной из своих тем, хотел удалить кое-какой документ, являющийся коммерческой тайной, но видимо это невозможно. А тут просто хотел проверить, а оно вон как вышло.
|
TarasBer |
![]()
Сообщение
#12
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Потому что тут много придурков, которые сначала создаёт тему, отвечают в ней и так далее, а потом вдруг удаляют содержимое всех сообщений.
-------------------- |
Искатель |
![]()
Сообщение
#13
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 44 Пол: Мужской Реальное имя: Сергей Репутация: ![]() ![]() ![]() |
Грубо
|
Lapp |
![]()
Сообщение
#14
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Грубо Искатель, ты зря принял это на свой счет. TarasBer просто сказал тебе причину, по которой время редактирования собственных мессаджей было сокращено до 8 часов (с начального в несколько дней), он не имел в виду тебя. И, кстати, он не совсем точно выразился - таких "придурков" не много, но они все же есть (прецеденты были). Главный момент такой: написанный тобой мессадж принадлежит не тебе, а форуму. Редактирование - только для исправления опечаток и т.п. Всегда рекомендуется подумать, прежде чем отправить пост. И уж конечно, не следует помещать в него важную информацию для ограниченного круга лиц. В случае, если такое все же произошло (по недомыслию), советую обратиться к Администрации форума. Сообщение отредактировано: Lapp - 25.05.2011 10:46 -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
![]()
Сообщение
#15
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> прециденты
-------------------- |
Lapp |
![]()
Сообщение
#16
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
> прециденты спасибо, исправил, +1 Не ошибается тот, кто ничего не делает )) Не подумай, что это про тебя, Тарас - у тебя алиби: > .. которые сначала создаёт тему, .. ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 16.05.2025 12:24 |