Árbol binario en C con nodo de tipo cadena

C – Árbol binario de cadenas

En este post te mostraré cómo implementar la estructura de datos de árbol binario en ANSI C en donde el dato de cada nodo o rama será una cadena.

Te enseñaré cómo agregar un struct de nodo de árbol cuyo dato es char*, elegir si el nodo va a la izquierda o derecha (comparando cadenas) , recorrer el árbol en preorden, inorden y postorden y también hacer una búsqueda en el mismo.

Me estoy basando en el tutorial de árboles binarios en C que presenté anteriormente, solo que en aquel entonces fue con un tipo de dato entero, ahora lo haré con strings.

Nota: nodo y rama serán usados como sinónimos a lo largo de este post.

(más…)

Concatenar char y string en C

Concatenar char y string en C

En este post sobre C te mostraré cómo concatenar un carácter y una cadena, es decir, agregar un tipo de dato char a un tipo de dato char* que no es otra cosa más que un arreglo de caracteres, ya que en C no existen las strings como tal.

Explicado con pocas palabras te enseñaré como agregar un char como 'a' a una cadena como "Hol".

Aunque en otros lenguajes esto no tiene ninguna complejidad, en ANSI C hay que escribir un poco más de código.

(más…)

Raíz cuadrada sin sqrt en lenguaje C - Método de Newton

C – Raíz cuadrada sin sqrt: Método de Newton

En este blog ya hemos visto cómo calcular la raíz cuadrada de un número usando el lenguaje de programación C y la función sqrt, pero hoy veremos cómo obtener la raíz cuadrada sin usar sqrt.

Para calcular la raíz cuadrada de un número en C sin sqrt vamos a aplicar el Método de Newton en donde nos vamos a ir aproximando a la raíz cuadrada del número.

Como siempre, aquí te explicaré cómo aplicar el método, más no el método en sí, pues para ello puedes consultar otros sitios.

(más…)

Valor absoluto en C

Valor absoluto en C

En este post de programación en C te enseñaré a calcular el valor absoluto de un número.

El valor absoluto es la distancia que existe entre dos puntos de una recta, y esta distancia siempre será positiva.

Explicado con otras palabras y sin ser matemático, el valor absoluto es convertir un número a su representación positiva en caso de que éste sea negativo.

Anteriormente te enseñé cómo convertir un número negativo a positivo en C en donde vimos funciones nativas, pero en este post te enseñaré cómo hacer una función propia.

(más…)

Distancia entre dos coordenadas usando C

C – Distancia entre dos coordenadas

Hoy te mostraré cómo calcular la distancia entre dos puntos del globo terráqueo a partir de las coordenadas de los mismos, usando el lenguaje de programación C. Por ejemplo, sabremos la distancia que hay entre dos ciudades o lugares usando solo sus coordenadas.

Al final tendremos un programa en C que nos dirá la distancia que hay entre dos puntos en línea recta, con el resultado en kilómetros que al final podremos convertir a otra unidad como metros o millas.

Por cierto, vamos a usar la fórmula del semiverseno, también conocida como Haversine.

Nota: esto es distinto a calcular la distancia entre dos puntos de un plano cartesiano, aquí vamos a calcular la distancia entre dos puntos geográficos, es decir, dos lugares del planeta Tierra.

(más…)

Distancia entre dos puntos en C - Teorema de Pitágoras

C – Distancia entre dos puntos

Hoy veremos cómo obtener la distancia entre dos puntos del plano cartesiano usando el lenguaje de programación C y la fórmula de la distancia, que no es más que aplicar el teorema de Pitágoras.

Básicamente vamos a transcribir la fórmula al lenguaje y encerrarla en una función para su reutilización a través del resto de código.

Aquí te mostraré el programa en C para obtener la distancia entre dos puntos, pero no te explicaré la fórmula. Si quieres estudiar la fórmula te recomiendo este enlace.

Nota: si quieres calcular la distancia entre dos puntos geográficos del planeta mira este post.

(más…)

Redireccionar salida a archivo

Enviar contenido de archivo a programa y automatizar pruebas

En este post de programación te enseñaré a automatizar pruebas cuando solicitamos datos por teclado, sin importar el lenguaje de programación.

Cuando escribimos programas en donde se solicitan datos al usuario a través del teclado y probamos esos programas, debemos escribir los valores manualmente.

Si modificamos el programa o hay un error, lo volvemos a ejecutar y a llenar esos valores. Esto se hace tedioso cada vez, pues invertimos más tiempo probando que arreglando los errores o agregando mejoras.

Obviamente me estoy refiriendo a los programas por consola y en cuanto a “automatizar” me refiero a usar un archivo de texto con valores para pasarlos al programa en lugar de escribirlos manualmente.

Veamos entonces cómo automatizar la entrada de datos en programas. Te enseñaré un ejemplo con C y otro con Python, aunque este paradigma funcionará para cualquier otro lenguaje.

(más…)

Ejemplo simple de uso de make y makefile

Ejemplo simple de makefile

El makefile se usa en conjunto con la herramienta make para construir y crear programas. Uno de sus usos más básicos es el de compilar un programa en C.

En este post te mostraré un ejemplo muy simple de un makefile en C que simplemente va a compilar y ejecutar un programa.

Realmente será un ejemplo muy sencillo de makefile, pero que te servirá en caso de que sea obligatorio usar el makefile.

(más…)

Usar fgets y scanf en conjunto en C

C – Limpiar búfer al usar scanf y fgets

Hay un pequeño problema que ocurre en C al usar scanf en conjunto con fgets. Es decir, primero usar scanf para leer un valor, e inmediatamente después usar fgets.

El problema es que al usar scanf en primer lugar, el programa no “espera” a que el usuario introduzca la cadena con fgets. Como resultado, se lee una cadena vacía o “nada”.

Este error también se me ha presentado al usar scanf en algunos ciclos y en conjunto con otras funciones que leen de stdin.

Por eso hoy te mostraré una solución para este problema.

(más…)

Problema con scanf - No lee espacios al solicitar datos por teclado

C – Leer cadena con espacios

Al solicitar datos de tipo cadena por teclado en C lo más común es usar la función scanf con el formato %s, cosa que funciona bien excepto por dos cosas:

Así que hoy te mostraré cómo escanear o leer desde el teclado una cadena que incluya espacios en el lenguaje de programación C, misma que es una alternativa segura a scanf.

(más…)

Ordenar arreglos en C

Este post es un recopilatorio de varios métodos de ordenamiento de arreglos en C. Recuerda que existen varias formas de ordenar un array en C, sin importar si el orden es ascendente o descendente.

Existen funciones nativas o métodos que podemos programar manualmente, algunas más rápidas que otras y algunas más simples que otras, pero el objetivo es siempre el mismo: ordenar un arreglo.

Así que colocaré los enlaces en este post para tenerlos como referencia.

(más…)

Ejemplo de struct en C

Struct en C

Un struct en C permite usar algo parecido a los objetos anónimos de la programación orientada a objetos. No son clases, simplemente son un modo de agrupar un objeto de determinado tipo con ciertas propiedades.

En este tutorial te mostraré cómo declarar, asignar y leer valores de un struct en C. Será una introducción y referencia con ejemplos sobre el uso de structs en C

(más…)

Función strncpy en C

La función strncpy en el lenguaje C es una mejora (o alternativa) de la función strcpy que quiere decir string copy. La n indica el conteo que se copia, que en términos simples podrían ser caracteres.

Entonces la diferencia es que strncpy copia solo determinada cantidad de caracteres, contraria a strcpy que copia todo; con el riesgo de que ocurra un desbordamiento de búfer.

En este post te mostraré la sintaxis de strncpy y su modo de uso con ejemplos.

(más…)