Programación en C - Codificar texto con matriz de 25 letras

C – Codificación de texto con matriz

Hoy te mostraré un ejercicio resuelto en el lenguaje de programación C. Se trata de codificar un texto usando una matriz de 5 x 5 en donde una letra del alfabeto (que es el código) se remueve de la matriz para que solo haya 25 letras.

No encontré un nombre para esta codificación, pero básicamente se trata de eso: solicitar la letra que será el código, generar la matriz con las 25 letras sin contar el código y luego cifrar letras de par en par.

A continuación te muestro los detalles del ejercicio.

(más…)

Iniciar juego de arqueros en el bosque

Arqueros en el bosque con C – Programación de juego

Hoy te mostraré la solución a un ejercicio propuesto en C que trata sobre hacer el juego de Arqueros en el bosque.

El juego consiste de un bosque representado mediante una cuadrícula, como el que se presenta a continuación (la vista es aérea):

Cuadrícula de bosque para arqueros - Juego programado en C

Cuadrícula de bosque para arqueros – Juego programado en C

Donde X representa un árbol. El objetivo del juego consiste en que 2 jugadores (arqueros) ingresan al bosque por extremos opuestos (J1 en 9-A y J2 en 1-I) y cada uno debe de intentar eliminar al otro.

Para ello en cada turno un arquero podrá elegir entre moverse un lugar o disparar un flechazo. Los flechazos se mueven en línea recta, una distancia máxima de 5 metros (asuma cada celda 1 metro).

Por otro lado un jugador no puede moverse a una celda donde hay un árbol y las flechas no pueden traspasarlos. Al recibir un flechazo el jugador pierde el round, las partidas se componen de 3 round y las gana el que gane 2 de ellos.

Veamos entonces cómo hacer este juego en ANSI C, C, C 99 o como le quieras llamar. Obviamente es compatible con C++.

(más…)

Radio y circunferencia de círculo con C

Radio y circunferencia en C

En este post de programación en C vamos a resolver un ejercicio muy simple. Se trata de calcular el radio y la circunferencia de un círculo.

Lo único que vamos a hacer será leer el diámetro (recuerda que este valor puede venir de cualquier lugar, por ejemplo, entrada del usuario), aplicar las fórmulas e imprimir los resultados.

Por cierto, no olvides que vamos a necesitar PI para calcular la circunferencia y radio en C.

(más…)

Tres en línea (tic tac toe) programado en C - Desarrollo del juego

Tres en línea en C – Programación de juego

En este post de programación en C te mostraré el código fuente para el juego conocido como tres en línea, tres en raya, tic tac toe, gatitos, etcétera.

Tres en línea (tic tac toe) programado en C - Desarrollo del juego

Tres en línea (tic tac toe) programado en C – Desarrollo del juego

He programado el juego en C estándar así que se puede compilar en varios sistemas operativos, y también se puede compilar con un compilador de C++.

El juego de tres en línea que he desarrollado en C soporta el modo jugador contra jugador, jugador contra CPU (con una pequeña inteligencia artificial) y CPU contra CPU. A lo largo del post te explicaré el código y cómo es que funciona cada parte del programa.

Por cierto, en este caso el juego se desarrolla en la consola pero se le puede agregar una interfaz usando alguna librería como Allegro.

(más…)

C - Leer números separados por coma usando scanf

C – Escanear números separados por coma

En este post sobre C y scanf te enseñaré cómo leer dos números separados por coma. Es decir, solicitar al usuario que ingrese dos números separados por coma y escanearlos por separado usando scanf.

Por ejemplo, que el usuario digite 12,34 y que nosotros leamos los dos números 12 y 34 por separado.

Lo único que vamos a usar será scanf; función presente en stdio.h.

(más…)

Extraer cuerpo de archivo HTML usando ANSI C - Trabajo con cadenas

C – Extraer contenido de archivo HTML

En este post de programación en C te enseñaré cómo obtener el texto (ignorando etiquetas) que se encuentra dentro de las etiquetas <body> de un archivo HTML.

Vamos a extraer lo que hay en el cuerpo de la página, pero además vamos a obtener solo el texto, ignorando todas las etiquetas que existan. Por poner un ejemplo, si la página es:

El programa en ANSI C debe extraer el contenido y además ignorar las etiquetas, produciendo la siguiente salida:

Veamos cómo resolver este ejercicio propuesto en C, ya que en otro lenguaje con soporte nativo de expresiones regulares sería fácil, pero aquí no lo es tanto.

(más…)

Ejercicio de cadenas en ANSI C

C – Ejercicio con cadenas

Hoy vamos a resolver un ejercicio propuesto en C. Se trata del trabajo con cadenas, vamos a solicitar dos cadenas y a partir de ellas hacer determinadas cosas. El problema dice así:

Escribir un programa que solicite dos cadenas que puede contener espacios, el programa deberá:

  • Decir qué cadena es mayor y cuál es menor alfabéticamente
  • Generar una nueva cadena que será la primera cadena leída, con las vocales convertidas a MAYÚSCULAS
  • Generar una nueva cadena que será la segunda cadena leída, con las consonantes convertidas a MAYÚSCULAS
  • Generar una nueva cadena concatenando las dos que ya fueron convertidas
  • Generar una nueva cadena que contenga la cadena concatenada invertida

Al finalizar el programa, este deberá:

  • Imprimir las dos cadenas originales
  • Imprimir las dos cadenas con las conversiones
  • Imprimir la cadena concatenada
  • Imprimir la cadena concatenada invertida

Veamos cómo resolver este problema usando ANSI C.

(más…)

Conversión de decimal con parte fraccionaria en C

C – Convertir decimal con parte fraccionaria

En este post de programación en ANSI C te mostraré 3 conversiones entre bases numéricas: de decimal a binario, a octal y a hexadecimal. La diferencia con mis otros posts es que en este caso vamos a convertir también la parte fraccionaria, decimal o como le llames a lo que va después del punto decimal.

Entonces vamos a convertir entre binario y decimal con punto decimal, además de convertir a octal, hexadecimal y a todas las otras bases.

Así que al final, con el código que te mostraré, podrás convertir números en base 10 con parte fraccionaria a cualquier base. Por ejemplo, convertir 3722.24 base 10 a E8A.3D70 base 16.

Te repito que la principal diferencia es que ahora este conversor en C soporta conversiones con punto decimal, cosa que me habían solicitado varios usuarios en mis otros posts.

(más…)

Intercalar mayúscula y minúscula en C - Programación

C – Convertir a minúscula y mayúscula intercalado

En este post de programación en C, también conocido como ANSI C vamos a ver cómo intercalar las letras de una cadena para convertir una en mayúscula, la siguiente en minúscula, y así hasta terminar.

Básicamente vamos a convertir un carácter a minúscula, el segundo a mayúscula y así sucesivamente. Esto es convertir la cadena de manera intercalada.

Por ejemplo, convertir parzibyte a PaRzIbYtE.

(más…)

Á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…)