Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.25;
Скачать: CL | DM;

Вниз

Есть две бочки, надо определить, какая имеет больше объем   Найти похожие ветки 

 
Максим ©   (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(объёмы по формуле), а затем сравниваешь сами объемы.
var
d1, 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.042 c
14-1133771685
Anton__
2005-12-05 11:34
2005.12.25
Программа, выполняющаяся на сервере


14-1133517167
Del_programmer
2005-12-02 12:52
2005.12.25
API хэлп


1-1133426979
general
2005-12-01 11:49
2005.12.25
Ограничение на длину элемента списка в TMemo


2-1133937740
Sung
2005-12-07 09:42
2005.12.25
Большие массивы


14-1133453114
Витёк
2005-12-01 19:05
2005.12.25
Как узнать наиболее встречающееся слово в массиве??