Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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(объёмы по формуле), а затем сравниваешь сами объемы.
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.013 c
4-1130396689
DancerMan
2005-10-27 11:04
2005.12.25
TWebBrowser запретить выделение


14-1133336045
msguns
2005-11-30 10:34
2005.12.25
Kansas. Magnum Opus. Утопание в кайфе


2-1134219586
gdaujk
2005-12-10 15:59
2005.12.25
Const - параметры функции


14-1133505456
12DFBDD
2005-12-02 09:37
2005.12.25
FAQ www.delphimaster.ru


2-1133880218
seleman
2005-12-06 17:43
2005.12.25
Вопрос по сокетам





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский