Funções Matemáticas em C

Convertendo String para Numérica

Números Inteiros

Long.parseLong


#include <stdio.h>
#include <stdlib.h>

int main() {
    char numeroEmString[] = "12345";
    
    // Convertendo a string para long
    long numeroEmLong = strtol(numeroEmString, NULL, 10);
    
    printf("Número em long: %ld\n", numeroEmLong);

    return 0;
}

Números Reais

Double.parseDouble

#include <stdio.h>
#include <stdlib.h>

int main() {
    char numeroEmString[] = "3.14";
   
    // Convertendo a string para double
    double numeroEmDouble = strtod(numeroEmString, NULL);
   
    printf("Número em double: %f\n", numeroEmDouble);

    return 0;
}

Boleanos

Boolean.parseBoolean

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

bool parseBoolean(const char *str) {
    // Comparando a string com valores que representam verdadeiro
    // (case insensitive)
    return (strcasecmp(str, "true") == 0 || strcmp(str, "1") == 0);
}

int main() {
    char boolStr[] = "true";
   
    // Convertendo a string para booleano
    bool resultado = parseBoolean(boolStr);
   
    printf("Resultado: %s\n", resultado ? "true" : "false");

    return 0;
}

Arredondando valores

Math.floor

#include <stdio.h>
#include <math.h>

int main() {
    double numero = 5.78;

    // Arredondando para baixo usando floor
    double numeroArredondado = floor(numero);

    printf("Número original: %f\n", numero);
    printf("Número arredondado para baixo: %f\n", numeroArredondado);

    return 0;
}

Math.ceil

#include <stdio.h>
#include <math.h>

int main() {
    double numero = 5.78;

    // Arredondando para cima usando ceil
    double numeroArredondado = ceil(numero);

    printf("Número original: %f\n", numero);
    printf("Número arredondado para cima: %f\n", numeroArredondado);

    return 0;
}

Math.round

#include <stdio.h>
#include <math.h>

int main() {
    double numero = 5.78;

    // Arredondando para o inteiro mais próximo usando round
    double numeroArredondado = round(numero);

    printf("Número original: %f\n", numero);
    printf("Número arredondado para o inteiro mais próximo: %f\n", numeroArredondado);

    return 0;
}

Math.trunc

#include <stdio.h>
#include <math.h>

int main() {
    double numero = 5.78;

    // Truncando o número para a parte inteira usando trunc
    double numeroTruncado = trunc(numero);

    printf("Número original: %f\n", numero);
    printf("Número truncado para a parte inteira: %f\n", numeroTruncado);

    return 0;
}

Digite um número com 3 casas decimais

 

#include <stdio.h>

int main() {
    double numero = 5.789;

    // Imprimir o número com três casas decimais
    printf("Número com três casas decimais: %.3f\n", numero);

    return 0;
}

Formatar moeda

Conversor de moeda em C não existe!

toLocaleString

#include <stdio.h>
#include <locale.h>

int main() {
    setlocale(LC_ALL, "Portuguese_Brazil");

    double valor = 1234.56;

    printf("Valor formatado: R$ %.2f\n", valor);

    return 0;
}

Funções matemáticas comuns

Math.random

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    // Define a semente para a função rand usando o tempo atual
    srand((unsigned int)time(NULL));

    // Gera um número aleatório no intervalo [0, 1)
    double numeroAleatorio = (double)rand() / RAND_MAX;

    printf("Número aleatório: %f\n", numeroAleatorio);

    return 0;
}

double numeroAleatorioNoIntervalo(double min, double max) {
    return min + ((double)rand() / RAND_MAX) * (max - min);
}
Math.abs

#include <stdio.h>
#include <math.h>

int main() {
    double numero = -5.67;

    // Valor absoluto para números de ponto flutuante
    double absoluto = fabs(numero);

    printf("O valor absoluto de %f é %f\n", numero, absoluto);

    return 0;
}

Math.max

#include <stdio.h>
#include <stdarg.h>

int maximo(int quantidade, ...) {
    va_list args;
    va_start(args, quantidade);

    int max = va_arg(args, int);

    for (int i = 1; i < quantidade; ++i) {
        int valor = va_arg(args, int);
        if (valor > max) {
            max = valor;
        }
    }

    va_end(args);

    return max;
}

int main() {
    int maximoValor = maximo(5, 10, 30, 5, 25, 15);

    printf("O máximo é: %d\n", maximoValor);

    return 0;
}

int maximoEntreTres = Math.max(Math.max(numero1, numero2), numero3);
Math.min

#include <stdio.h>
#include <stdarg.h>

int minimo(int quantidade, ...) {
    va_list args;
    va_start(args, quantidade);

    int min = va_arg(args, int);

    for (int i = 1; i < quantidade; ++i) {
        int valor = va_arg(args, int);
        if (valor < min) {
            min = valor;
        }
    }

    va_end(args);

    return min;
}

int main() {
    int minimoValor = minimo(5, 10, 30, 5, 25, 15);

    printf("O mínimo é: %d\n", minimoValor);

    return 0;
}

int minimoEntreTres = Math.min(Math.min(numero1, numero2), numero3);
Math.pow

#include <stdio.h>
#include <math.h>

int main() {
    double base = 2.0;
    double expoente = 3.0;

    // Calculando a potência usando pow
    double resultado = pow(base, expoente);

    printf("%f elevado a %f é igual a %f\n", base, expoente, resultado);

    return 0;
}

Math.sqrt

#include <stdio.h>
#include <math.h>

int main() {
    double numero = 25.0;

    // Calculando a raiz quadrada usando sqrt
    double raizQuadrada = sqrt(numero);

    printf("A raiz quadrada de %f é %f\n", numero, raizQuadrada);

    return 0;
}

Math.SQRT1_2

#include <stdio.h>
#include <math.h>

#define SQRT1_2 (sqrt(1.0 / 2.0))

int main() {
    printf("A raiz quadrada de 1/2 é %f\n", SQRT1_2);

    return 0;
}

public static final double SQRT1_2 = 0.7071067811865476;
Math.SQRT2

#include <stdio.h>
#include <math.h>

#define SQRT2 (sqrt(2.0))

int main() {
    printf("A raiz quadrada de 2 é %f\n", SQRT2);

    return 0;
}

public static final double SQRT2 = 1.4142135623730951;
 
Math.cbrt
#include <stdio.h>
#include <math.h>

int main() {
    double numero = 27.0;

    // Calculando a raiz cúbica usando cbrt
    double raizCubica = cbrt(numero);

    printf("A raiz cúbica de %f é %f\n", numero, raizCubica);

    return 0;
}
Math.sign
#include <stdio.h>

int sign(int numero) {
    if (numero > 0) {
        return 1;
    } else if (numero < 0) {
        return -1;
    } else {
        return 0;
    }
}

int main() {
    int numero = -42;

    int sinal = sign(numero);

    printf("O sinal de %d é %d\n", numero, sinal);

    return 0;
}

Funções trigonométricas

Math.PI

#include <stdio.h>
#include <math.h>

int main() {
    // Obtendo o valor de pi usando M_PI
    double pi = M_PI;

    printf("O valor de pi é aproximadamente %f\n", pi);

    return 0;
}

function radianos(){
return Math.PI/180
}
#include <stdio.h>
#include <math.h>

double radianos() {
    return M_PI / 180.0;
}

int main() {
    // Utilizando a função radianos para converter 45 graus para radianos
    double graus = 45.0;
    double radianos_valor = graus * radianos();

    printf("%f graus é aproximadamente %f radianos\n", graus, radianos_valor);

    return 0;
}
 
Math.sin

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando o seno de 45 graus (convertido para radianos)
    double angulo_em_graus = 45.0;
    double angulo_em_radianos = angulo_em_graus * (M_PI / 180.0);
    double resultado_seno = sin(angulo_em_radianos);

    printf("O seno de %f graus é aproximadamente %f\n", angulo_em_graus, resultado_seno);

    return 0;
}

Math.cos

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando o cosseno de 60 graus (convertido para radianos)
    double angulo_em_graus = 60.0;
    double angulo_em_radianos = angulo_em_graus * (M_PI / 180.0);
    double resultado_cosseno = cos(angulo_em_radianos);

    printf("O cosseno de %f graus é aproximadamente %f\n", angulo_em_graus, resultado_cosseno);

    return 0;
}

Math.tan

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando a tangente de 30 graus (convertido para radianos)
    double angulo_em_graus = 30.0;
    double angulo_em_radianos = angulo_em_graus * (M_PI / 180.0);
    double resultado_tangente = tan(angulo_em_radianos);

    printf("A tangente de %f graus é aproximadamente %f\n", angulo_em_graus, resultado_tangente);

    return 0;
}

 
Math.asin

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando o arco seno de 0.5
    double valor = 0.5;
    double resultado_arco_seno = asin(valor);

    printf("O arco seno de %f é aproximadamente %f radianos\n", valor, resultado_arco_seno);

    return 0;
}

Math.acos

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando o arco cosseno de 0.5
    double valor = 0.5;
    double resultado_arco_cosseno = acos(valor);

    printf("O arco cosseno de %f é aproximadamente %f radianos\n", valor, resultado_arco_cosseno);

    return 0;
}

Math.atan

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando o arco tangente de 0.5
    double valor = 0.5;
    double resultado_arco_tangente = atan(valor);

    printf("O arco tangente de %f é aproximadamente %f radianos\n", valor, resultado_arco_tangente);

    return 0;
}

 
Math.sinh

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando a função hiperbólica seno de 2.0
    double numero = 2.0;
    double resultado_sinh = sinh(numero);

    printf("A função hiperbólica seno de %f é aproximadamente %f\n", numero, resultado_sinh);

    return 0;
}

Math.cosh

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando a função hiperbólica cosseno de 2.0
    double numero = 2.0;
    double resultado_cosh = cosh(numero);

    printf("A função hiperbólica cosseno de %f é aproximadamente %f\n", numero, resultado_cosh);

    return 0;
}

Math.tanh

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando a função hiperbólica tangente de 2.0
    double numero = 2.0;
    double resultado_tanh = tanh(numero);

    printf("A função hiperbólica tangente de %f é aproximadamente %f\n", numero, resultado_tanh);

    return 0;
}

 
Math.asinh

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando o arco seno hiperbólico de 2.0
    double numero = 2.0;
    double resultado_asinh = asinh(numero);

    printf("O arco seno hiperbólico de %f é aproximadamente %f\n", numero, resultado_asinh);

    return 0;
}

asinh(x) = ln(x + sqrt(x^2 + 1))
Math.acosh

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando o arco cosseno hiperbólico de 2.0
    double numero = 2.0;
    double resultado_acosh = acosh(numero);

    printf("O arco cosseno hiperbólico de %f é aproximadamente %f\n", numero, resultado_acosh);

    return 0;
}

acosh(x) = ln(x + sqrt(x^2 - 1))
Math.atanh

#include <stdio.h>
#include <math.h>

int main() {
    // Calculando o arco tangente hiperbólico de 0.5
    double numero = 0.5;
    double resultado_atanh = atanh(numero);

    printf("O arco tangente hiperbólico de %f é aproximadamente %f\n", numero, resultado_atanh);

    return 0;
}

atanh(x) = 0.5 * ln((1 + x) / (1 - x))

Logarítmos

Math.log

#include <stdio.h>
#include <math.h>

int main() {
    double numero = 10.0;

    // Calculando o logaritmo natural usando log
    double resultadoLog = log(numero);

    printf("O logaritmo natural de %f é %f\n", numero, resultadoLog);

    return 0;
}

Math.log10

#include <stdio.h>
#include <math.h>

int main() {
    double numero = 100.0;

    // Calculando o logaritmo na base 10 usando log10
    double resultadoLog10 = log10(numero);

    printf("O logaritmo na base 10 de %f é %f\n", numero, resultadoLog10);

    return 0;
}

 
Math.E

#include <stdio.h>
#include <math.h>

#define CONSTANTE_E exp(1.0)

int main() {
    printf("A constante e é aproximadamente %f\n", CONSTANTE_E);

    return 0;
}

Math.LN2
#include <stdio.h>
#include <math.h>

#define LN2 log(2.0)

int main() {
    printf("O logaritmo natural de 2 é aproximadamente %f\n", LN2);

    return 0;
}
Math.LOG2E
#include <stdio.h>
#include <math.h>

#define LOG2E (log(2.0) / log(exp(1.0)))

int main() {
    printf("A constante LOG2E é aproximadamente %f\n", LOG2E);

    return 0;
}
Math.LN10

#include <stdio.h>
#include <math.h>

#define LN10 log10(10.0)

int main() {
    printf("O logaritmo natural de 10 é aproximadamente %f\n", LN10);

    return 0;
}

Math.LOG10E

#include <stdio.h>
#include <math.h>

#define LOG10E (1.0 / log(10.0))

int main() {
    printf("A constante LOG10E é aproximadamente %f\n", LOG10E);

    return 0;
}

 
Math.exp
#include <stdio.h>
#include <math.h>

int main() {
    double exponente = 2.0;

    // Calculando a exponenciação usando exp
    double resultadoExponencial = exp(exponente);

    printf("e elevado a %f é aproximadamente %f\n", exponente, resultadoExponencial);

    return 0;
}
Math.log2

#include <stdio.h>
#include <math.h>

int main() {
    double numero = 8.0;

    // Calculando o logaritmo na base 2 usando log2
    double resultadoLog2 = log2(numero);

    printf("O logaritmo na base 2 de %f é aproximadamente %f\n", numero, resultadoLog2);

    return 0;
}

Math.log1p

#include <stdio.h>
#include <math.h>

int main() {
    double numero = 0.5;

    // Calculando o logaritmo natural de 1 + número usando log1p
    double resultadoLog1p = log1p(numero);

    printf("O logaritmo natural de 1 + %f é aproximadamente %f\n", numero, resultadoLog1p);

    return 0;
}