Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизЕсть две бочки, надо определить, какая имеет больше объем Найти похожие ветки
← →
Максим © (2005-12-10 15:40) [0]Дали мне такое упражнение.
Есть две бочки, надо определить, какая имеет больше объем.
Бочка - это цилиндр. Имеет размеры: 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;
Просьба, не пишите пожалуйста код, а дайте подсказок, чтобы я дописал функцию. и Конечно, приму замечания по уже написанной функции. Спасибо.
← →
Piero © (2005-12-10 16:01) [1]а где объявление переменной r?
← →
Piero © (2005-12-10 16:04) [2]а извини, стормозил, а чего все правильно, в чем вопрос?
← →
palva © (2005-12-10 16:06) [3]> Вот что я написал:
По моему, правильно написали.
← →
Максим © (2005-12-10 16:14) [4]Вот мне написали, что это упражнение на if ы и ветвления.
Это уже как я понял в процедуре ButtonClick??
← →
De1uxe © (2005-12-10 16:18) [5]IF ы и ветвления у тебя будут когда ты будешь сравнивать объемы
← →
Максим © (2005-12-10 16:23) [6]Так я не понял. В полях edit1 и edit2 мне надо ввести только высоту бочки?
Потому что в функции не известно значение переменной h(высота).
А как же тогда d(диаметр)? Ведь написано, что надо найти объем в кубических метрах.
← →
De1uxe © (2005-12-10 16:28) [7]эдитов должно быть 4:
1.d1
2.d2
3.h1
4.h2
← →
Максим © (2005-12-10 16:54) [8]И все-таки. Есть ли необходимость создать условие в функции?
Или условие создавать уже в процедуре ButtonClick?
Вот такой вариант условия подойдет?
var
d1, d2, h1, h2, res : real;
if d1 and h1 > d2 and h2 then
...
else
Или намекните насчет правильностьи условия.
← →
begin...end © (2005-12-10 16:58) [9]> Максим © (10.12.05 15:40)
> Конечно, приму замечания по уже написанной функции.
Замечания такие:
а) в Delphi есть встроенная функция Pi;
б) для возведения в квадрат есть функция Sqr;
в) формулу можно переписать как h * Pi * Sqr(d) / 4.
← →
Максим © (2005-12-10 17:11) [10]
> 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) [11]
> begin...end © (10.12.05 16:58) [9]
Небольшая поправка если я не ошибаюсь то sqr это функция извлечения корня
← →
Максим © (2005-12-10 17:16) [12]
> De1uxe © (10.12.05 17:11) [11]
>
>
> > begin...end © (10.12.05 16:58) [9]
>
> Небольшая поправка если я не ошибаюсь то sqr это функция
> извлечения корня
Sqrt извлечение корня, а Sqr возведение в квадрат.
← →
begin...end © (2005-12-10 17:17) [13]> Максим © (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) [14]2 Максим ©
Сначала вычисляешь V(объёмы по формуле), а затем сравниваешь сами объемы.
vard1, d2, h1, h2, res : real;
...
v1 := h1 * pi * d1 * d1 / 4;
v2 := h2 * pi * d2 * d2 / 4;
if v1>v2 then ...
else...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.013 c