![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Есть две бочки, надо определить, какая имеет больше объем [D7, XP]
Максим © (2005-12-10 15:40:00)Дали мне такое упражнение.
Есть две бочки, надо определить, какая имеет больше объем.
Бочка - это цилиндр. Имеет размеры: h - высота, d - диаметр.
Пользователь вводит параметры двух бочек (в метрах), нажимает кнопку
и получает ответ: какая больше вместит воды.
Сначала напишем функцию, которая определяет объем бочки (в метрах
кубических):
V(h, d:Real):Real (буквой V обычно и обозначают объем, но можно назвать
функцию и Obyom и как угодно :-) )
После этого по нажатию на кнопку найдем какая бочка больше и выдадим
сообщение об этом.
(объем цилиндра считается: V = h * pi * r * r
где r - радиус (r = d / 2)
Мне надо написать функцию, которая определяет объем бочки (в метрах
кубических).
Вот я и пишу функцию. Но не совсем понимаю как.
Вот что я написал:
function v(h, d: real): real; //где v - объем, h - высота, d - диаметр.
const
pi = 3.1415926;
var
r : real;
begin
r := d / 2;
v := h * pi * r * r;
end;
Просьба, не пишите пожалуйста код, а дайте подсказок, чтобы я дописал функцию. и Конечно, приму замечания по уже написанной функции. Спасибо.
begin...end (2005-12-10 17:17:00) [1]> Максим © (10.12.05 17:11) [10]
> Вот только не могу найти как пишется функция Pi.
Так и пишется -- Pi.
> Можно вызвать операцию возведения в степень (Power из модуля
> Math)
Можно. Но для случая возведения в квадрат Power будет медленнее работать.
> De1uxe © (10.12.05 17:11) [11]
Нет, функция извлечения корня -- это Sqrt.
De1uxe (2005-12-10 17:17:00) [2]2 Максим ©
Сначала вычисляешь V(объёмы по формуле), а затем сравниваешь сами объемы.
var
d1, d2, h1, h2, res : real;
...
v1 := h1 * pi * d1 * d1 / 4;
v2 := h2 * pi * d2 * d2 / 4;
if v1>v2 then ...
else...
Максим (2005-12-10 17:16:00) [3]
> De1uxe © (10.12.05 17:11) [11]
>
>
> > begin...end © (10.12.05 16:58) [9]
>
> Небольшая поправка если я не ошибаюсь то sqr это функция
> извлечения корня
Sqrt извлечение корня, а Sqr возведение в квадрат.
Максим (2005-12-10 17:11:00) [4]
> begin...end © (10.12.05 16:58) [9]
>
> Замечания такие:
>
> а) в Delphi есть встроенная функция Pi;
> б) для возведения в квадрат есть функция Sqr;
> в) формулу можно переписать как h * Pi * Sqr(d) / 4.
Спасибо большое. Вот только не могу найти как пишется функция Pi.
И еще.
Мне вот что порекомендовали по поводу возведения в степень.
Можно вызвать операцию возведения в степень (Power из модуля Math)
Но эта операция не поддерживается напрямую ЦП в машинном коде
нет операции степень. Она есть в блоке математич. вычислений с плав. запятой, (этот блок встроен в ЦП). Так вот это займет дольше времени, чем просто умножить z * z. Потому что умножать будет более простое вычислительное устройство и операция займет меньшее число тактов.
Или насчет Sqr я не так понял?
De1uxe (2005-12-10 17:11:00) [5]
> begin...end © (10.12.05 16:58) [9]
Небольшая поправка если я не ошибаюсь то sqr это функция извлечения корня
begin...end (2005-12-10 16:58:00) [6]> Максим © (10.12.05 15:40)
> Конечно, приму замечания по уже написанной функции.
Замечания такие:
а) в Delphi есть встроенная функция Pi;
б) для возведения в квадрат есть функция Sqr;
в) формулу можно переписать как h * Pi * Sqr(d) / 4.
Максим (2005-12-10 16:54:00) [7]И все-таки. Есть ли необходимость создать условие в функции?
Или условие создавать уже в процедуре ButtonClick?
Вот такой вариант условия подойдет?
var
d1, d2, h1, h2, res : real;
if d1 and h1 > d2 and h2 then
...
else
Или намекните насчет правильностьи условия.
De1uxe (2005-12-10 16:28:00) [8]эдитов должно быть 4:
1.d1
2.d2
3.h1
4.h2
Максим (2005-12-10 16:23:00) [9]Так я не понял. В полях edit1 и edit2 мне надо ввести только высоту бочки?
Потому что в функции не известно значение переменной h(высота).
А как же тогда d(диаметр)? Ведь написано, что надо найти объем в кубических метрах.
De1uxe (2005-12-10 16:18:00) [10]IF ы и ветвления у тебя будут когда ты будешь сравнивать объемы
Максим (2005-12-10 16:14:00) [11]Вот мне написали, что это упражнение на if ы и ветвления.
Это уже как я понял в процедуре ButtonClick??
palva (2005-12-10 16:06:00) [12]> Вот что я написал:
По моему, правильно написали.
Piero (2005-12-10 16:04:00) [13]а извини, стормозил, а чего все правильно, в чем вопрос?
Piero (2005-12-10 16:01:00) [14]а где объявление переменной r?