IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> Решение квадратного уравнения
Искатель
сообщение 26.12.2010 0:36
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Здравствуйте!
С вашего позволения попрошу у вас совета в решении такой проблемы:
Моя программа (в Делфи), вычисляет корни квадратного уравнения.
Я затрудняюсь с добавлением этой проверки: if d=0 then...
Подскажите, как правильно это вписать?
И если можно, помогите с кнопочкой "Очистка", не представляю как её запрограммировать.


Прикрепленные файлы
Прикрепленный файл  ___________.______._____________________.rar ( 213.83 килобайт ) Кол-во скачиваний: 280
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-TarasBer-
сообщение 26.12.2010 1:17
Сообщение #2


Гость






Я просмотрел код unit1.pas в блокноте, ничего не понял.
Что за Button1, Edit1?
Почему нельзя давать компонентам человеческие имена?
Проверка на то, что дискриминант нулевой, выглядит так: if abs(d) < eps then ...
В качестве eps напиши что-то типа 1E-10
Это всё (вместо простого сравнения с нулём) из-за того, что погрешности вычислений могут привести к некоторому отклонению. Короче, прямо сравнивать вещественные числа нельзя.
Очистка что должна делать? Если очищать поля ввода, то просто пиши labelResult.Caption := '';
 К началу страницы 
+ Ответить 
Искатель
сообщение 26.12.2010 15:28
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Спасибо!
Я в корне переделал код программы (это требование преподавателя!).
Она сделана на трёх формах и вроде бы работает. Не пойму только, почему вычисляет результаты неправильно.
Подскажите, пожалуйста, есть в ней ошибка?


Прикрепленные файлы
Прикрепленный файл  Projects.rar ( 221.58 килобайт ) Кол-во скачиваний: 325
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 26.12.2010 16:24
Сообщение #4


Гость






Ну блин.

((-b)+Sqrt(D))/2*a

Вот везде скобок наставил, кроме там, где нужно.

(-b+Sqrt(D))/(2*a)

И назови компоненты нормально (поле Name).
 К началу страницы 
+ Ответить 
-TarasBer-
сообщение 26.12.2010 16:27
Сообщение #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;


 К началу страницы 
+ Ответить 
Искатель
сообщение 26.12.2010 17:39
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Черт побери! До чего же приятно иметь дело с профессионалами!!! Супер! Работает как надо!

Уважаемые профи! Ну не понимаю я смысл этой строки, хоть убей: if abs(D) < 1E-9 then form2.panel2.caption:= ''.
Если преподаватель будет спрашивать что означает сие, мне останется только блеять или мычать.
Объясните, пожалуйста
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.12.2010 17:52
Сообщение #7


Гость






Цитата
мне останется только блеять или мычать
Не надо ни мычать, не блеять... Из-за погрешности представления вещественных чисел (Гугл знает об этом, если что), нельзя два вещественных числа сравнивать напрямую (оператором "="). Нужно проверить, не превышает ли модуль их разности некоего маленького значения. Вот ты и проверяешь модуль дискриминанта: если он меньше одной миллиардной (10-9), то можно в данном случае его считать нулем.
 К началу страницы 
+ Ответить 
Искатель
сообщение 26.12.2010 18:01
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Спасибо! Если что, так и объясню. Представляю какие глаза будут у препода! Думаю он про это не знает!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Искатель
сообщение 23.05.2011 12:26
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Класс
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 23.05.2011 13:24
Сообщение #10


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Так вставило, что до сих пор не отпустило?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Искатель
сообщение 23.05.2011 21:11
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Да нет, извините. Не в этом дело. Просто в одной из своих тем, хотел удалить кое-какой документ, являющийся коммерческой тайной, но видимо это невозможно. А тут просто хотел проверить, а оно вон как вышло.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 24.05.2011 9:44
Сообщение #12


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Потому что тут много придурков, которые сначала создаёт тему, отвечают в ней и так далее, а потом вдруг удаляют содержимое всех сообщений.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Искатель
сообщение 24.05.2011 15:40
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Грубо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 24.05.2011 23:30
Сообщение #14


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Искатель @ 24.05.2011 16:40) *
Грубо

Искатель, ты зря принял это на свой счет. TarasBer просто сказал тебе причину, по которой время редактирования собственных мессаджей было сокращено до 8 часов (с начального в несколько дней), он не имел в виду тебя. И, кстати, он не совсем точно выразился - таких "придурков" не много, но они все же есть (прецеденты были).

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


Сообщение отредактировано: Lapp - 25.05.2011 10:46


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TarasBer
сообщение 25.05.2011 9:25
Сообщение #15


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> прециденты


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 25.05.2011 10:42
Сообщение #16


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(TarasBer @ 25.05.2011 10:25) *
> прециденты

спасибо, исправил, +1

Не ошибается тот, кто ничего не делает ))
Не подумай, что это про тебя, Тарас - у тебя алиби:
> .. которые сначала создаёт тему, ..
smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.04.2024 19:47
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"