8  Funções do C++ Builder

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++.

8.1  Principais funções da biblioteca stdlib.h

 

 Tabela 8-1

Função

Sintaxe

Descrição

abs

int abs(int x)

Retorna o valor absoluto (sem sinal) de um inteiro.

atof

double atof(const char *s)

Converte uma String para ponto flutuante.

atoi

int atoi(const char *s)

Converte uma String para um valor inteiro.

atol

long atol(const char *s)

Converte uma String para um inteiro longo.

fcvt

char *fcvt(double value, int ndig, int *dec, int *sign)

Converte um número em ponto flutuante para String.

itoa

char *itoa(int value, char *string, int radix)

Converte um valor inteiro para String. Retorna um ponteiro para String.

labs

long labs(long int x)

Retorna o valor absoluto de um inteiro longo.

random

int random(int num)

Gera um número aleatório entre 0 e num-1.

randomize

void randomize(void)

Inicializa o gerador de números aleatórios.

strtod

double strtod(const char *s, char **endptr)

Converte um String para ponto flutuante (longo ou não).

strtol

long strtol(const char *s, char **endptr, int radix)

Converte um String para um inteiro longo.

strtoul

unsigned long strtoul(const char *s, char **endptr, int radix)

Converte um String para um inteiro longo sem sinal.

ultoa

char *ultoa(unsigned long value, char *string, int radix)

Converte um inteiro longo sem sinal para String.

8.2  Principais funções da biblioteca math.h

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

Função

Sintaxe

Descrição

acos

double acos(double x)

Arco Cosseno de x.

asin

double asin(double x)

Arco Seno de x.

atan

double atan(double x)

Arco Tangente de x.

cos

double cos(double x)

Cosseno de x.

cosh

double cosh(double x)

Cosseno hiperbólico de x.

exp

double exp(double x)

Exponencial de x (ex).

fabs

double fabs(double x)

Retorna o valor absoluto de um ponto flutuante.

log

double log(double x)

Logaritmo natural (base e) de x.

log10

double log10(double x)

Logaritmo base 10 de x.

pow

double pow(double x, double y)

Retorna o valor de x elevado a y.

sin

double sin(double x)

Seno de x.

sinh

double sinh(double x)

Seno hiperbólico de x.

sqrt

double sqrt(double x)

Raiz quadrada de x.

tan

double tan(double x)

Tangente de x.

tanh

double tanh(double x)

Tangente hiperbólica de x.

 

.

.

.

 

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.