Poema Cirfrado

Programa para «cifrar» con un básico «Cifrado César», modificando letras por otras letras.

No acabé de darle entidad, así que no lo incluyo en el apartado de Poesía Programable que tanto me divierte en ocasiones.

Hace más de un año realicé este pequeño proyectito para un podcast poético que coordinaba Ernesto Pentón:

Proyecto para escribir un poema (sin tildes) desajustado una cantidad variable que se llamará desajuste.

Escribir un programa en C que modifique un texto dado cambiando cada letra por la letra siguiente en el alfabeto a partir de ahí llegar hasta la letra z y continuar con las primeras letras del mismo como si el alfabeto fuese un vector circular infinito.

Utilizar el operador módulo dividiendo la suma del índice más su desajuste entre 27 para hacer las consecuentes sustituciones (de la letra i por la letra (i+desajuste)%27) por las letras siguientes teniendo en cuenta que no puede pasar del número 26 (de 0-A a 26-Z).

Utilizar un array de letras para que sea el índice del array quien me diga qué letra sustituye a qué letra.

Pero el hecho de que no pudiese hacerlo con tildes sin una complicación enorme (es muy rollo programar en C con Wide Strings), decidí no generalizarlo a más de una frase y lo dejé por demasiado absurdo. Sí, sí, demasiado absurdo.

/********************************************************
    Poema Desajuste (escrito en C)
    realizado por Giusseppe Domínguez
    el día 11 de marzo de 2024 en Madrid
    bajo el sol del invierno.
********************************************************/
#include <stdio.h>
#include <string.h>
#include <time.h>

int desajuste(char *verso, char *verso_desajustado, int desajuste);
int firma();

int main(int argc, char *argv[])
{
    char verso[]= "primavera es ezo";
    char verso_desajustado[255];

  desajuste(verso, verso_desajustado, 2);

    return(firma());
}

int desajuste(char *verso, char *verso_desajustado, int desajuste)
{
    int  i, letra;
    int  long_verso=strlen(verso);
  char alfabeto[] = "abcdefghijklmnNopqrstuvwxyz";
  int  long_alfabeto = strlen(alfabeto);
  strcpy (verso_desajustado, verso);

    printf("Verso antes   de bucle es: #%s#\n", verso_desajustado);

    for (i=0; i<long_verso; i++) {
        if (verso[i] == ' ') verso_desajustado[i] = ' ';
        else
     for (letra=0; letra<long_alfabeto; letra++) {
       if (verso[i] == alfabeto[letra]) verso_desajustado[i] = alfabeto[(letra+desajuste)%long_alfabeto];
     }
    }

    printf("Verso después de bucle es: #%s#\n", verso_desajustado);
    return long_verso;
}

/* Función para aumentar mi ego cada vez que se ejecuta. */
int firma()
{
  time_t tiempo = time(0);
  struct tm *tiempolocal = localtime(&tiempo);
  char txt_firma[128];
  strftime(txt_firma,128,"\nGiusseppe Domínguez, a las %H:%M. M-%Y%m%d",tiempolocal);
  printf("%s\n",txt_firma);
    return 0;
}

 

 

Esto no es una broma