Расчет площади и объема фигур на Делфи (часть 2)

В первой статье я приготовил визуальную форму для программы расчета площади и объема фигур на Делфи. Настало время подумать о реализации самого решения. Это дело творческое. У каждого есть фантазия. Я не стал сильно осложнять и предположил, что будет шесть функций. Они решают непосредственно саму задачу.

Вот эти функции:

//площадь цилиндра

function sq_cylinder (r,h:Integer):Real;

begin

Result := 2*Pi*r*(h+r);

end;

//площадь полого цилиндра

function sq_pol_cylinder (r1,h,r2:Integer):Real;

begin

Result := 2*Pi*h*(r2-r1);

end;

//площадь шара

function sq_sphere (r:Integer):Real;

begin

Result := 4*Pi*sqr(r);

end;

//объем цилиндра

function v_cylinder (r,h:Integer):Real;

begin

Result := 2*Pi*sqr(r)*h;

end;

//объем полого цилиндра

function v_pol_cylinder (r1,r2,h:Integer):Real;

begin

Result := Pi*h*(r2-r1);

end;

//объем шара

function v_sphere (r:Integer):Real;

begin

Result := 4/3*Pi*r*r*r;

end;

Эти функции следует расположить в разделе implementation. У меня все завязано на кнопке Рассчитать. Значит само решение будет в TForm2.Button1Click. Воспользуюсь оператором Case. Он будет проверять индексы компонента ComboBox1. Также в Case будет else ShowMessage(‘Выберите фигуру!!!’); — исключение. Если фигура не выбрана, а рассчитать нажали, то будет сообщение.

Case выбрал значение. Записывает в Label4 результат: Label4.Caption:=’Выбран цилиндр. ‘ Дальше дело техники. Добавляем решение к выводу. Не буду подробно расписывать.

case ComboBox1.ItemIndex of

0:

begin

Label4.Caption:=’Выбран цилиндр. S=’ +

FloatToStr(sq_cylinder(StrToInt(Edit1.Text),StrToInt(Edit2.Text))) + ‘. Объем V=’+

FloatToStr(v_cylinder(StrToInt(Edit1.Text),StrToInt(Edit2.Text))) + ‘.';

Edit3.Text:=’0′;

end;

Это если выбран Цилиндр. Дело в том, что индексы ComboBox начинаются с нуля. В нулевом значении индекса у меня Цилиндр. И так далее. Сам листинг нажатия кнопки на Делфи выглядит у меня следующим образом:

//расчет

procedure TForm2.Button1Click(Sender: TObject);

begin

case ComboBox1.ItemIndex of

0:

begin

Label4.Caption:=’Выбран цилиндр. S=’ +

FloatToStr(sq_cylinder(StrToInt(Edit1.Text),StrToInt(Edit2.Text))) + ‘. Объем V=’+

FloatToStr(v_cylinder(StrToInt(Edit1.Text),StrToInt(Edit2.Text))) + ‘.';

Edit3.Text:=’0′;

end;

1:

begin

Label4.Caption:=’Выбран полый цилиндр. S=’ +

FloatToStr(sq_pol_cylinder(StrToInt(Edit1.Text),StrToInt(Edit2.Text),StrToInt(Edit3.Text)))+

‘. Объем V=’+ FloatToStr(v_pol_cylinder(StrToInt(Edit1.Text),StrToInt(Edit3.Text),StrToInt(Edit2.Text))) + ‘.';;

end;

2:

begin

Label4.Caption:=’Выбран шар. S=’+ FloatToStr(sq_sphere(StrToInt(Edit1.Text)))

+ ‘. Объем V=’+ FloatToStr(v_sphere(StrToInt(Edit1.Text)))+’.';

Edit2.Text:=’0′;

Edit3.Text:=’0′;

end;

else ShowMessage(‘Выберите фигуру!!!’);

end;

end;

И последнее, я добавил в события (Events) Onselect  объекта ComboBox в Делфи вызов Button1Click. Решать будет программка даже если вы не нажмете кнопку, а просто выберите фигуру. Также обнуляются ненужные поля Edit2.Text:=’0′; и так далее.

. вычисление объема в делфи
. вычисление объема в делфи
Комментирование и размещение ссылок запрещено.