Є дві бочки, треба визначити, яка має більший об'єм

Є дві бочки, треба визначити, яка має більший об'єм

Дали мені таку вправу.

Є дві бочки, треба визначити, яка має більший об'єм.

Бочка - це циліндр. Має розміри: 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.

Схожі статті