Além das operações matemáticas fundamentais, para a solução de nossos problemas são necessárias outras funções como raiz quadrada, logaritmo, seno, cosseno e outras. Algumas dessas funções fazem parte da biblioteca padrão do C++ definida no arquivo stdlib.h. Outras funções mais complexas estão definidas no arquivo math.h. A seguir veremos as principais funções de biblioteca do C++.
As funções da stdlib.h podem ser utilizadas no C++ Builder sem a necessidade de incluir nenhum arquivo extra. Já as funções da math.h, para serem utilizadas necessitam da inclusão do arquivo de cabeçalho. Isto deve ser feito logo abaixo da inclusão da vcl.h que é a biblioteca padrão do Builder.
#include <vcl.h>
#include <math.h>
Tabela 8-2
|
acos |
||
|
asin |
||
|
atan |
||
|
cos |
||
|
cosh |
||
|
exp |
||
|
fabs |
||
|
log |
||
|
log10 |
||
|
pow |
||
|
sin |
||
|
sinh |
||
|
sqrt |
||
|
tan |
||
|
tanh |
.
.
.
Ex 11) Dadas as coordenadas (X,Y) dos 3 vértices de um triângulo qualquer, elaborar um Programa C++ Builder para calcular e exibir o tamanho dos lados a, b e c do triângulo, a Área do triângulo e o Perímetro do triângulo.
Sugestão: utilize as fórmulas da Distância e da Área (Heron) vistas nos exercícios anteriores.


Solução 1:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x1, x2, x3, y1, y2, y3,a, b, c, sp, area;
// Obtém as coordenadas (x,y) dos 3 vértices
x1 = StrToFloat(Edit1->Text);
y1 = StrToFloat(Edit2->Text);
x2 = StrToFloat(Edit3->Text);
y2 = StrToFloat(Edit4->Text);
x3 = StrToFloat(Edit5->Text);
y3 = StrToFloat(Edit6->Text);
// Calcula o Lado A, distância dos pontos 1 e 2
a = sqrt(pow(x2-x1,2.0)+pow(y2-y1,2.0));
// Calcula o Lado B, distância dos pontos 2 e 3
b = sqrt(pow(x3-x2,2.0)+pow(y3-y2,2.0));
// Calcula o Lado C, distância dos pontos 3 e 1
c = sqrt(pow(x1-x3,2.0)+pow(y1-y3,2.0));
// Calcula Semiperímetro e Área
sp = (a+b+c)/2.0;
area = sqrt(sp*(sp-a)*(sp-b)*(sp-c));
// Exibe resultados
Edit7->Text = FloatToStr(a);
Edit8->Text = FloatToStr(b);
Edit9->Text = FloatToStr(c);
Edit10->Text = FloatToStr(area);
Edit11->Text = FloatToStr(a+b+c);
}
Comentário: Observe que em primeiro lugar devemos calcular os lados do triângulo, pois os demais cálculos dependem destes valores. Em seguida, calculamos o semiperímetro e, por último, a área que depende tanto dos lados quanto do semiperímetro.
Solução 2:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x1, x2, x3, y1, y2, y3,a, b, c, sp, area;
x1 = StrToFloat(Edit1->Text);
y1 = StrToFloat(Edit2->Text);
x2 = StrToFloat(Edit3->Text);
y2 = StrToFloat(Edit4->Text);
x3 = StrToFloat(Edit5->Text);
y3 = StrToFloat(Edit6->Text);
a = sqrt(pow(x2-x1,2.0)+pow(y2-y1,2.0));
b = sqrt(pow(x3-x2,2.0)+pow(y3-y2,2.0));
c = sqrt(pow(x1-x3,2.0)+pow(y1-y3,2.0));
sp = (a+b+c)/2.0;
area = sqrt(sp*(sp-a)*(sp-b)*(sp-c));
Edit7->Text = FormatFloat("0.0000",a);
Edit8->Text = FormatFloat("0.0000",b);
Edit9->Text = FormatFloat("0.0000",c);
Edit10->Text = FormatFloat("0.0000",area);
Edit11->Text = FormatFloat("0.0000",a+b+c);
}
Comentário: a função FormatFloat é utilizada nesta segunda solução para arredondar os valores para quatro casas decimais.
