pl3.Visible:=False;
// вычисляем длины сторон треугольника
with StringGrid1 do
begin
a:=sqrt(sqr(StrToFloat(Cells[1,2])-StrToFloat(Cells[1,3]))
+sqr(StrToFloat(Cells[2,2])-StrToFloat(Cells[2,3])));
b:=sqrt(sqr(StrToFloat(Cells[1,1])-StrToFloat(Cells[1,3]))
+sqr(StrToFloat(Cells[2,1])-StrToFloat(Cells[2,3])));
c:=sqrt(sqr(StrToFloat(Cells[1,1])-StrToFloat(Cells[1,2]))
+sqr(StrToFloat(Cells[2,1])-StrToFloat(Cells[2,2])));
end;
// по формуле Герона находим его площадь
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
// используя формулы из тригонометрии
// находим величины углов
ugolA:=2*arctan(sqrt((p-b)*(p-c)/(p*(p-a))));
ugolB:=2*arctan(sqrt((p-a)*(p-c)/(p*(p-b))));
ugolC:=2*arctan(sqrt((p-a)*(p-b)/(p*(p-c))));
// выводим результаты на панель
pl2lb2.Caption:=FloatToStrF(s,ffFixed,6,2);
gb1lb4.Caption:=FloatToStrF(a,ffFixed,6,2);
gb1lb5.Caption:=FloatToStrF(b,ffFixed,6,2);
gb1lb6.Caption:=FloatToStrF(c,ffFixed,6,2);
gb2lb4.Caption:=FloatToStrF(ugolA,ffFixed,4,2);
gb2lb5.Caption:=FloatToStrF(ugolB,ffFixed,4,2);
gb2lb6.Caption:=FloatToStrF(ugolC,ffFixed,4,2);
Перед операторной скобкой begin необходимо добавить раздел описаний.
var a,b,c,p,s,ugolA,ugolB,ugolC:real;
Остался последний обработчик. Переходим в окно конструктора форм. Щелкаем на пункте меню “Построение”. Набираем строки кода, которые позволят в поле рисунка построить треугольник, задаваемый координатами вершин.
// делаем видимой третью панель
pl1.Visible:=False;
pl2.Visible:=False;
pl3.Visible:=True;
with Image1.Canvas do
begin
// строим оси
MoveTo(10,10); LineTo(10,Image1.Height-10);
LineTo(Image1.Width-10,Image1.Height-10);
// определяем максимальные значения X и Y
maxX:=StrToFloat(StringGrid1.Cells[1,1]);
maxY:=StrToFloat(StringGrid1.Cells[2,1]);
for i:=2 to 3 do
begin
if StrToFloat(StringGrid1.Cells[1,i])>maxX then
maxX:=StrToFloat(StringGrid1.Cells[1,i]);
if StrToFloat(StringGrid1.Cells[2,i])>maxY then
maxY:=StrToFloat(StringGrid1.Cells[2,i]);
end;
// выбираем масштабы по осям
mx:=maxX/(Image1.Width-30);
my:=maxY/(Image1.Height-30);
// определяем координаты точек рисунка
xA:=Round(StrToFloat(StringGrid1.Cells[1,1])/mx);
yA:=Image1.Height-10-Round(StrToFloat(StringGrid1.Cells[2,1])/my);
xB:=Round(StrToFloat(StringGrid1.Cells[1,2])/mx);
yB:=Image1.Height-10-Round(StrToFloat(StringGrid1.Cells[2,2])/my);
xC:=Round(StrToFloat(StringGrid1.Cells[1,3])/mx);
yC:=Image1.Height-10-Round(StrToFloat(StringGrid1.Cells[2,3])/my);
// строим треугольник
Polygon([Point(xA,yA),Point(xB,yB),Point(xC,yC)]);
Перед операторной скобкой begin необходимо добавить раздел описаний.
var maxX,maxY,mx,my:real; xA,yA,xB,yB,xC,yC,i:integer;
Теперь можете запускать программу и делать с ней, что Вам захочется. После запуска программы необходимо ввести координаты вершин треугольника в соответствующие ячейки сетки и выбрать пункт меню “Расчеты”. Можно проверить работу программы при выборе любых пунктов меню. Программа должна работать безукоризненно. Если она не работает, проверьте записи всех обработчиков – возможно, Вы допустили ошибку. Когда программа заработает, у Вас появится чувство легкой эйфории. Можно сделать лучше? Прекрасно! За работу, товарищи по DELPHI!
7. КОНСОЛЬНОЕ ПРИЛОЖЕНИЕ
Для того, чтобы не отвлекать достаточно много времени на создание интерфейса программы и сосредоточиться на отработке приемов и технологии программирования различных схем обработки данных могут использоваться консольные приложения
Отметим, что в предыдущем разделе мы описали создание простейшего оконного приложения. Вы вероятно заметили, что конструирование оконной формы отнимает достаточно много времени, затраты которого окупаются приятным пользовательским интерфейсом.
Консольное приложение – это программа, предназначенная для работы в режиме MS DOS, для которой устройством ввода является клавиатура, а устройством вывода – монитор, работающий в режиме отображения символьной информации. Эта программа уже не будет реагировать на различные события так, как предыдущая.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.