A biblioteca math.h
A biblioteca math.h oferece várias funções utilitárias para cálculos. Veja abaixo algumas delas:
M_PI: a constante M_PI tem como valor 3,14159...;
sqrt: para cálculo de raiz quadrada. Ex: sqrt( 25 ) = 5;
pow: para potência. Ex: pow( 2.0, 3.0 ) = 8.0;
sin: para o cálculo do seno de um valor em radianos. Ex: sin( M_PI ) = seno de 180º;
cos: para o cálculo do cosseno de um valor em radianos. Ex: cos( M_PI ) = cosseno de 180º;
Para o cálculo do módulo de um número ou expressão, se pode utilizar a função abs da biblioteca stdlib.h.
abs: para o cálculo do valor absoluto. Ex: abs( -1 ) = 1, abs( 1 ) = 1;
Exemplos:
Abaixo um exemplo que imprime os números entre -5 e 5 por extenso.
#include <stdio.h>
#include <stdlib.h>
int main() {
int i;
for( i = -5; i <= 5; i++ ) {
if ( i < 0 )
printf( "menos " );
switch( abs( i ) ) {
case 0:
printf( "zero" );
break;
case 1:
printf( "um" );
break;
case 2:
printf( "dois" );
break;
case 3:
printf( "tres" );
break;
case 4:
printf( "quatro" );
break;
case 5:
printf( "cinco" );
break;
}
printf( "\n" );
}
return 0;
}
Abaixo um programa que imprime a potência conforme uma base e expoente informados pelo usuário:
#include <stdio.h>
#include <math.h>
int main() {
float base, expoente, pot;
printf( "Infome a base: " );
scanf( "%f", &base );
printf( "Informe o expoente: " );
scanf( "%f", &expoente );
pot = pow( base, expoente );
printf( "\n%.2f elevado a %.2f eh: %.2f", base, expoente, pot );
return 0;
}
Abaixo um programa que calcula os valores "x1" e "x2" de uma equação do segundo grau:
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, delta, x1, x2;
printf( "Informe A: " );
scanf( "%f", &a );
printf( "Informe B: " );
scanf( "%f", &b );
printf( "Informe C: " );
scanf( "%f", &c );
delta = pow( b, 2 ) - ( 4 * a * c );
if ( a == 0 ) {
printf( "\nA = 0, isso causa erro de divisao por zero" );
} else {
if ( delta < 0 ) {
printf( "\nDELTA < 0, isso causa erro de radicando negativo." );
} else {
x1 = ( -b + sqrt( delta ) ) / ( 2 * a );
x2 = ( -b - sqrt( delta ) ) / ( 2 * a );
printf( "\nX1 = %.4f", x1 );
printf( "\nX2 = %.4f", x2 );
}
}
return 0;
}
Preste atenção ao exemplo acima, onde, é necessário verificar se o A informado é 0. Se sim a equação não tem raizes válidas porque acontece uma divisão por zero. Repare que o denominador das equações é (2 * a), se a = 0, então, a*2 = 0 o que significa que o denominador da equação é 0. A divisão por zero não traz um resultado válido. Outra verificação é feita sobre o valor de DELTA. Isso porque, nas equações do exemplo, o delta está dentro da função sqrt que calcula a raiz quadrada. No entanto, não existe raiz quadrada de número negativo. Por isso, a verificação se o valor de delta é menor que zero (negativo).