Здравствуйте!
С вашего позволения попрошу у вас совета в решении такой проблемы:
Моя программа (в Делфи), вычисляет корни квадратного уравнения.
Я затрудняюсь с добавлением этой проверки: if d=0 then...
Подскажите, как правильно это вписать?
И если можно, помогите с кнопочкой "Очистка", не представляю как её запрограммировать.
Прикрепленные файлы
___________.______._____________________.rar ( 213.83 килобайт )
Кол-во скачиваний: 280
Я просмотрел код unit1.pas в блокноте, ничего не понял.
Что за Button1, Edit1?
Почему нельзя давать компонентам человеческие имена?
Проверка на то, что дискриминант нулевой, выглядит так: if abs(d) < eps then ...
В качестве eps напиши что-то типа 1E-10
Это всё (вместо простого сравнения с нулём) из-за того, что погрешности вычислений могут привести к некоторому отклонению. Короче, прямо сравнивать вещественные числа нельзя.
Очистка что должна делать? Если очищать поля ввода, то просто пиши labelResult.Caption := '';
Спасибо!
Я в корне переделал код программы (это требование преподавателя!).
Она сделана на трёх формах и вроде бы работает. Не пойму только, почему вычисляет результаты неправильно.
Подскажите, пожалуйста, есть в ней ошибка?
Прикрепленные файлы
Projects.rar ( 221.58 килобайт )
Кол-во скачиваний: 325
Ну блин.
((-b)+Sqrt(D))/2*a
Вот везде скобок наставил, кроме там, где нужно.
(-b+Sqrt(D))/(2*a)
И назови компоненты нормально (поле Name).
Да у тебя вообще в обработчике кнопки логика неверная.
Если дискриминант меньше нуля, то зачем показывать вторую форму?
И зачем показывать форму до изменения её содержимого?
Поменяй тот кусок на
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;
Черт побери! До чего же приятно иметь дело с профессионалами!!! Супер! Работает как надо!
Уважаемые профи! Ну не понимаю я смысл этой строки, хоть убей: if abs(D) < 1E-9 then form2.panel2.caption:= ''.
Если преподаватель будет спрашивать что означает сие, мне останется только блеять или мычать.
Объясните, пожалуйста
Спасибо! Если что, так и объясню. Представляю какие глаза будут у препода! Думаю он про это не знает!
Класс
Так вставило, что до сих пор не отпустило?
Да нет, извините. Не в этом дело. Просто в одной из своих тем, хотел удалить кое-какой документ, являющийся коммерческой тайной, но видимо это невозможно. А тут просто хотел проверить, а оно вон как вышло.
Потому что тут много придурков, которые сначала создаёт тему, отвечают в ней и так далее, а потом вдруг удаляют содержимое всех сообщений.
Грубо
Искатель, ты зря принял это на свой счет. TarasBer просто сказал тебе причину, по которой время редактирования собственных мессаджей было сокращено до 8 часов (с начального в несколько дней), он не имел в виду тебя. И, кстати, он не совсем точно выразился - таких "придурков" не много, но они все же есть (прецеденты были).
Главный момент такой: написанный тобой мессадж принадлежит не тебе, а форуму. Редактирование - только для исправления опечаток и т.п. Всегда рекомендуется подумать, прежде чем отправить пост. И уж конечно, не следует помещать в него важную информацию для ограниченного круга лиц. В случае, если такое все же произошло (по недомыслию), советую обратиться к Администрации форума.
> прециденты