Un número son palabras

Qué mejor demostración de que un número son palabras que un traductor de números a palabras, así, tan absurdo como este que intenta transformar los números (dígitos) en palabras, especialmente orientado a crear un libro con las palabras de unos cuantos (indeterminados) decimales de números irracionales, pues hay pocas cosas más irracionales que este proyecto absurdo.

/********************************************************
    Proyecto tres14 (escrito en C)
    realizado por Giusseppe Domínguez
    a partir del día 8 de diciembre de 2019
********************************************************/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#define OK 1
#define KO 0
#define MAX_LONG 10 // Longitud máxima de nombre de dígito

int firma();
int digitea(char caracter);
int nombranumero(int idioma, char caracter, char *nombre);
int instrucciones(char *comando);

int main(int argc, char *argv[])
{
  int i, idioma=0;
  char nombrenumero[MAX_LONG], caracter;
  FILE *fp;
 
  if ((argc < 2) || (argc > 3)) { instrucciones(argv[0]); } // Faltan argumentos
  else if (argc == 2) { // Número desde línea de comando
    for (i=0; i<strlen(argv[1]); i++) {
      caracter=argv[1][i];
      if(! nombranumero(idioma, caracter, nombrenumero)) { instrucciones(argv[0]); return KO; }
      puts(nombrenumero);
    }
  }
  else if (argc == 3) { // Número en fichero argv[2]
    if ( (! isdigit(argv[1][0])) || ((idioma = digitea(argv[1][0])) > 1) ) {
      printf("[ERROR] No conocemos el idioma: %s\n", argv[1]);
      instrucciones(argv[0]);
    } 
    else if ((fp = fopen(argv[2],"r")) == NULL) {
      printf("[ERROR] intentando abrir el archivo %s\n", argv[2]);
      instrucciones(argv[0]);
    }
    else {
      while ((caracter = fgetc(fp)) != EOF) {
        if (caracter != '\n') { // Ignoramos los saltos de línea
          if (! nombranumero(idioma, caracter, nombrenumero)) { instrucciones(argv[0]); return KO; }
          printf("%s ", nombrenumero);
        }
      }
    }
  }
  printf("\n");
  firma();
  return OK;
}


/******************************************
  La función instrucciones hace lo que su nombre
  indica: Imprime las instrucciones del programa.
******************************************/
int instrucciones(char *comando) {
    printf("\nUtilización: %s [número_positivo] [idioma fichero]\n\n", comando);
    puts("Si introducimos un nombre de fichero, el primer parámetro indica el idioma");
    puts("Idioma puede ser:");
    puts("\t0 - Español");
    puts("\t1 - Inglés");
}

/******************************************
  La función nombranumero nombra el número
  contenido en el caracter (si procede, claro)
  y devuelve error si no lo consigue.
  idioma = 0 (español)
           1 (inglés)
******************************************/
int nombranumero(int idioma, char caracter, char *nombre) {
  int digito;
  static int nomascomas=0; // Para no encontrar más de una coma en un argumento
  // char *numeros[] = { "cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve" };
  char *numeros[2][MAX_LONG] = {
    { "cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve" },
    { "zero", "one", "two", "three", "for", "five", "six", "seven", "eigth", "nine" }
  };
  char *coma[] = { "coma", "point" };

  if ((caracter == ',') || (caracter == '.')) {
    strcpy(nombre, coma[idioma]);
    if (++nomascomas > 1) {
      printf("Un número no puede tener más de una coma\n");
      return KO;
    }
    return OK;
  }
  else if (isdigit(caracter)) {
    digito = digitea(caracter);
    strcpy(nombre, numeros[idioma][digito]);
    return OK;
  }
  printf("[ERROR] |%c| No es un caracter válido en un número positivo\n", caracter);
  strcpy(nombre, "ERROR");
  return KO;
}
/******************************************
  La función digitea devuelve un número entero
  a partir del caracter (char) proporcionado
******************************************/
int digitea(char caracter)
{
  int digito;
  digito = (int) (caracter + '0');
  digito -= 96;
  return digito;
}


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\n",tiempolocal);
  printf("%s\n",txt_firma);
  return OK;
}

Amapolas en el Cráter: Episodio 043

Programa *Amapolas en el Cráter*.

*20 minutos de voces habitando el espacio sonoro con poesía*. Poema de poemas propios o ajenos, fragmentados o completos. Textos recitados por poetas de los Talleres de Poesía y Escritura Creativa de la *Asociación Cultural Clave 53*. Te esperamos con nuevos episodios de Amapolas en el Cráter en nuestra web (*clave53.org*)

En este episodio han participado:

  • Paula García Izu
  • Isabel Jiménez
  • JMariano Velázquez
  • María Jesús Orella
  • Sal Ander
  • Pepa Delgado
  • Lucía Herrero
  • Javier Jiménez
  • Giusseppe Domínguez
  • Ernesto Pentón Cuza
  • Mónica Rubio

https://anchor.fm/clave53/episodes/Amapola-043-etfggq

Látigo

Poema que escribí y compuse visualmente hace ahora 20 años titulado «látigo», que formaba parte de un proyecto titulado Fronteras en el que pretendía escribir un libro que fuese dejando de lado el verso para ir convirtiéndose en poema visual, posteriormente objeto, instalación y acción poética.

El texto dice:

Látigo.

En cuanto llegue a ti mi lengua conocerás el sabor salado de la amargura.
No querrás perder el paraíso de mis labios enroscados a tus piernas, yedra vital que acaricia tus muslos.
Hemos llegado al restallido de siete cabezas dragones de silencio que abren en tu piel bocas de sangre.
El beso, al fin, es entre hermanos.

Giusseppe, M-20010606

Desde hace ya un año (o más)

El 13 de marzo de 2020 hice esta fotografía a petición de una amiga escritora que me pedía que le enviase un registro de algo que hubiese modificado a raíz del confinamiento duro al que estábamos abocados dada la pandemia debida a la COVID-19 (es femenino (el virus/la enfermedad…)).

Se agotó el papel higiénico en todas las tiendas, se escribió largo y tendido sobre ello, se publicaron análisis socio-económicos sobre la simbología del papel higiénico, sobre la sensación de protección, etc, etc, etc.

Nosotros teníamos bastantes rollos, pero a partir de esa fecha cambiamos algunos hábitos y algunos de los usos que hacíamos del papel higiénico los derivamos a papel de cocina, del que también teníamos varios rollos, para prolongar la vida de nuestras reservas higiénicas.

De momento, no hemos vuelto a los antiguos usos del papel higiénico, porque el uso más racional del papel de cocina facilita algunas cosas, así como reducimos el consumo del higiénico.

Nunca estoy plenamente convencido de que nuestras decisiones sean más ecológicamente recomendables que las opuestas, pero esta parece tener sentido en ese sentido, valga la redundancia.

Árboles

Árboles
domésticos
delimitan espacio a modo de prisión
de árboles
vivos
cuyo futuro está grabado
en piedra.

Una lámpara blanca
no es una bola de nieve
que anuncie un invierno
de sílice insignificante.

Foto tirada
sin ilusión
cansada
desenfocada.

Al fondo
una madeja de futuro
sabe que nada
(ni siquiera la fotografía
registro de la muerte)
evitará la quema.

Esto no es una broma