No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Math.h

8/12
Recursos

¿Qué es la biblioteca mat.h en C?

En el lenguaje de programación C, la biblioteca mat.h es una herramienta poderosa para realizar operaciones matemáticas avanzadas. Son innumerables las funciones disponibles que permiten trabajar con expresiones trigonométricas, logarítmicas, exponenciales, entre otras. Contar con el conocimiento de cómo utilizar esta biblioteca no solo incrementa tus habilidades en matemáticas computacionales, sino que optimiza tus capacidades de programación en C.

¿Cómo incluir mat.h en un programa C?

Para utilizar mat.h, primero debemos incluir esta biblioteca en nuestro código junto a stdio.h, que manejaremos para la impresión en pantalla. La estructura inicial de nuestro programa se verá así:

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

int main() {
    // código aquí
}

¿Cómo capturar un valor ingresado por el usuario?

Para capturar valores del teclado, C ofrece funciones útiles como scanf. Por ejemplo, podemos solicitar al usuario un número entero con el siguiente código:

#include <stdio.h>

int main() {
    int x;
    printf("Ingrese el valor de x: ");
    scanf("%d", &x);
    printf("El valor ingresado es %d\n", x);
    return 0;
}

¿Cómo usar funciones de mat.h?

Para explorar el potencial de mat.h, utilicemos algunas de las funciones matemáticas disponibles. Supongamos que deseamos calcular el seno de un valor dado por el usuario.

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

int main() {
    int x;
    printf("Ingrese el valor de x: ");
    scanf("%d", &x);

    float result;
    result = sin(x);  // Cálculo del seno
    printf("El valor del seno de x es %f\n", result);

    return 0;
}

¿Se pueden realizar otras operaciones matemáticas?

¡Sí! La biblioteca mat.h ofrece un abanico de posibilidades:

  • Coseno: Usa cos(x) para obtener el coseno de un ángulo.
  • Raíz cuadrada: Usa sqrt(x) para calcular la raíz cuadrada.
  • Exponencial: Usa pow(base, exponente) para elevar a potencias.

Aquí un ejemplo de cómo calcular el coseno:

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

int main() {
    int x;
    printf("Ingrese el valor de x: ");
    scanf("%d", &x);

    float cosValue;
    cosValue = cos(x);  // Cálculo del coseno
    printf("El coseno de x es %f\n", cosValue);

    return 0;
}

¿Qué otras funciones matemáticas puedo explorar?

El lenguaje C ofrece funciones matemáticas avanzadas para diversas necesidades, tales como:

  • exp(x) para obtener el exponencial de x.
  • log(x) para el logaritmo natural.
  • tan(x) para la tangente de un ángulo.

Estas herramientas convierten a mat.h en un aliado para ejecutar cálculos complejos con eficiencia y precisión.

¿Dónde puedo seguir aprendiendo sobre C?

Te recomiendo explorar más sobre el lenguaje C y sus bibliotecas a través del icónico libro "The C Programming Language" de Brian W. Kernighan y Dennis M. Ritchie. Esta lectura se considera esencial para cualquier programador que desee profundizar su comprensión y dominio del lenguaje C.

Aportes 22

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Por defecto sin y cos esta en radianes, por eso le hice este cambio al programa para pasarlo a grados.

Notese que math.h tiene el valor de pi guardado y se llama M_PI

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

int x;
double result;

int main()
{
    printf("Ingrese el valor de x: \n");
    scanf("%d", &x); // Recibe un valor de entrada, asignamos el valor a la variable x
    
    result = cos(x*M_PI/180);
    
    printf("El valor ingresado es: %d \n", x);
    printf("El valor del sin de x es: %f \n", result);

    return 0;
}

Adicional estoy usando linux, y no me dejaba usar bien las funciones de la libreria de C. Como explican mas adelante en los comentarios hay que ponerle -lm al final de la instruccion. Por ende mi archivo tasks.json de VSCODE quedo asi:

{
    "tasks": [
        {
            "type": "shell",
            "label": "C/C++: gcc build active file",
            "command": "/usr/bin/gcc", //g++ for cpp
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}",
                "-lm"
            ],
            "options": {
                "cwd": "/usr/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Generated task by Debugger"
        }
    ],
    "version": "2.0.0"
}

Para los que no pudieron compilar, como a mi. Utilicen el siguiente comando:

gcc -o math math.c -lm

Vamos, que es el mismo libro que estoy usando como material de apoyo en el curso de Ricardo Celis. 🤓

Algo de lo que me di cuenta haciendo pruebas es que la librería trabaja con radianes, por eso al poner sin(90) no os saldrá 1.
Para ello hice un método que sirve de conversor de grados a radianes.

los amo gracias por lo de el -lm en la terminal de linux ❤️
tenia un problema al compilar

Donde esta el enlace del libro que menciona Celis o alguien que sepa donde buscarlo?

Comparto link del libro “The C programming language”

https://ascslab.org/courses/ek132/reading/C-book.pdf

Para realizar los ejercicios estoy utilizando una raspberrypi, con el sistema operativo raspbian.
Al tratar de compilar el programa, me marca el siguiente error:

pi@raspberrypi:~/Platzi/Escuelas/DesarrolloSoftware/ProgramacionEstructurada $ gcc -o mathDemo mathDemo.c
/usr/bin/ld: /tmp/ccg38xMX.o: en la función `main':
mathDemo.c:(.text+0x34): referencia a `sin' sin definir
collect2: error: ld returned 1 exit status

Buscando en internet, encontré esta página; https://c.dokry.com/384/referencia-indefinida-a-sin.html
Para poder compilar tuve que agregar la opción -lm al final:

pi@raspberrypi:~/Platzi/Escuelas/DesarrolloSoftware/ProgramacionEstructurada $ gcc -o mathDemo mathDemo.c -lm
El seno y coseno están en radianes :v
Si alguien necesita el libro, lo tengo en español en formato. epub

no entiendo que pasa ejecuto el programa y me sale el error descripto al final
#include <stdio.h>
#include <math.h>

int x;
float result;

int main()
{

printf( "ingrese el valor de x: ");
scanf("%d ",&x);	
printf (" el valor de x es: %d",x);
result= sin(x);
printf("el valor del coseno de x es: %f\n", result);
return 0;

}

[Error] ld returned 1 exit status

sin esta clase no se podía resolver los retos de hace un par de clases

\#include\<stdio.h>#include\<math.h> int x;float result1;float result2;float result3;float result4; int main(){    printf("ingrese el valor de x: ");    scanf("%d", \&x);    result1 = sin(x);    result2 = cos(x);    result3 = tan(x);    result4 = log(x);    printf("El valor ingresado es:%d \n", x);    printf("El valor del seno de X es:%f\n", result1);    printf("El valor del coseno de X es:%f\n", result2);    printf("El valor del tangente de X es:%f\n", result3);    printf("El valor del logaritmo de X es:%f\n", result4);     return 0;}

Super buena clase

#include <stdio.h>
#include <math.h>
float x;
int main()
{
    printf("ingrese el valor de x: ");
    scanf("%f", &x);
    float conv = ((x/180)*3.141593);
    printf("valor es %f\n",conv);
    float resul = sin(conv);
    printf("el valor ingresado es: %f\n",x);
    printf("seno de x es: %f",resul);
    return 0;
} 

"Programming With C " de Byron S Gottfried,
Dicen que es el mejor libro para aprender lenguaje C.

Para los que no les reconozca math.h , y usa code blocks (estando en ubuntu 20.4).
Me funcionó hacer lo siguiente:
Ir a Project -> Build options -> Linker settings -> opción “add” :

Les aparecerá un cuadro de texto , escriben “libm.a” dan en “ok”.

Cierran la ventana dando en “ok” .
Listo, ya funciona.

pd: Abajo del cuadro de texto hay una opción que dice “Linker executable” está en auto detect. (Lo había probado seleccionando la opción “use C compiler”.) Funciona igual en auto detect o modificándolo. Saludoss

El video se queda sin audio despues del minuto 6:14

😂🤣😂

Visual Studio code ejecuta los codigos de forma correcta sin usar las etiquetas de librerias. Porque ocurre esto?

Los macros los vemos en la estructura de la librería. Espero ampliar sobre este tema.

buena clase