Главная страница
    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
14-1133603681
Хинт
2005-12-03 12:54
2005.12.25
Помогите разобраться с CALL


14-1133459980
Aleksandrrr
2005-12-01 20:59
2005.12.25
загрузочный диск


2-1133866993
WebSQLNeeder
2005-12-06 14:03
2005.12.25
Как работать с ini файлами или как создать свои настроичные файлы


8-1121420940
Илья.Сан
2005-07-15 13:49
2005.12.25
Частичная загрузка битмапов


14-1133475106
sedot
2005-12-02 01:11
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский