Є дві бочки, треба визначити, яка має більший об'єм
Дали мені таку вправу.
Є дві бочки, треба визначити, яка має більший об'єм.
Бочка - це циліндр. Має розміри: h - висота, d - діаметр.
Користувач вводить параметри двох бочок (в метрах), натискає кнопку
і отримує відповідь: яка більше вмістить води.
Спочатку напишемо функцію, яка визначає обсяг бочки (у метрах
кубічних):
V (h, d: Real): Real # XA0; (буквою V зазвичай і позначають обсяг, але можна назвати
функцію і Obyom і як завгодно :-))
Після цього після натискання на кнопку знайдемо яка бочка більше і видамо
повідомлення про це.
(Обсяг циліндра вважається: V = h * pi * r * r
де r - радіус (r = d / 2)
Мені треба написати функцію, яка визначає обсяг бочки (у метрах
кубічних).
Ось я і пишу функцію. Але не зовсім розумію як.
Ось що я написав:
function v (h, d: real): real; // де v - об'єм, h - висота, d - діаметр.
const
# XA0; pi = 3.1415926;
Прохання, не пишіть будь ласка код, а дайте підказок, щоб я дописав функцію. і Звичайно, прийму зауваження за тим самим написаної функції. Дякуємо.
а вибач, стормозіл, а чого все правильно, в чому питання?
> Ось що я написав:
На мою думку, правильно написали.
Ось мені написали, що цю вправу на if и і розгалуження.
Це вже як я зрозумів в процедурі ButtonClick ??
IF и і розгалуження у тебе будуть коли ти будеш порівнювати обсяги
Так я не зрозумів. У полях edit1 і edit2 мені треба ввести тільки висоту бочки?
Тому що в функції не відомо значення змінної h (висота).
А як же тоді d (діаметр)? Адже написано, що треба знайти об'єм в кубічних метрах.
І все таки. Чи є необхідність створити умова в функції?
Або умова створювати вже в процедурі # XA0; ButtonClick?
Ось такий варіант умови підійде?
var
# XA0; d1, d2, h1, h2, res. real;
if d1 and h1> d2 and h2 then
.
else
Або натякніть щодо правильності умови.
а) в Delphi є вбудована функція Pi;
б) для зведення в квадрат є функція Sqr;
в) формулу можна переписати як h * Pi * Sqr (d) / 4.
Велике спасибі. Ось тільки не можу знайти як пишеться функція Pi.
Мені ось що порекомендували з приводу зведення в ступінь.
Можна викликати операцію піднесення до степеня (Power з модуля Math)
Але ця операція не підтримується безпосередньо ЦП в машинному коді
немає операції ступінь. Вона є в блоці математичних. обчислень з плав. коми, (цей блок вбудований в ЦП). Так ось це займе довше часу, ніж просто # XA0; помножити z * z. Тому що множити буде простіше обчислювальний пристрій і операція займе менше число тактів.
Або щодо Sqr я не так зрозумів?
Sqrt добування кореня, а Sqr зведення в квадрат.
> Ось тільки не можу знайти як пишеться функція Pi.
Так і пишеться - Pi.
> Можна викликати операцію піднесення до степеня (Power з модуля
> Math)
Можна, можливо. Але для випадку зведення в квадрат Power буде повільніше працювати.
Ні, функція витягання кореня - це Sqrt.