aganar.com.mx

aganar.com.mx es un página autorizada para participar en línea en los sorteos de Pronósticos para la asistencia pública, la página incluso es recomendada directamente desde la página oficial de Pronósticos para la asistencia pública. Mi problema con la página de aganar.com.mx es el hecho de que, mientras que participar en los sorteos se puede hacer de forma anónima en cualquier agencia de Pronósticos, la página requiere para el registro todos tus datos: nombre completo, fecha de nacimiento, dirección, teléfono… algo no está bien.

De acuerdo, suena lógico que la página requiera algunos de tus datos para hacer los depósitos en caso de resultar ganador pero los datos que requiere siguen pareciendo excesivos. Veamos cómo va a tratar tu información personal la página:

2017-03-30-122025_1366x768_scrot

Vaya… esa sí que es información contradictoria. Yo no sé qué piensen ustedes pero yo no puedo confiar en una página como esta. Creo que seguiré comprando mis boletos de Pronósticos de la forma tradicional.

Advertisements

Tarea de programación: cola dinámica

Un visitante del sitio me pidió ayuda con su tarea de programación sobre una cola dinámica en lenguaje C. El programa debía tener la opción de desplegar el contenido de la cola además de permitir agregar y quitar elementos de la cola.

Este es el código con las correcciones necesarias para que funcione y corra en Linux; también debería correr en Windows para usuarios que no estén usando el Turbo C de los años  90s, aunque debería ser sencillo hacerlo funcionar con unas cuantas modificaciones mínimas.

Espero que este post sea de ayuda para los estudiantes que siempre buscan ayuda para este tipo de tareas de programación. Seguramente seguiré haciendo posts de este tipo de acuerdo a las solicitudes de tareas mas recurrentes :P.

// Tarea de programación - Cola dinámica
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

typedef struct nodo {
    int valor;
    struct nodo *siguiente;
} nodo;

nodo *cola = NULL, *ultimo = NULL;

/*
 * Esta función agrega un nuevo elemento a la cola, recibe como
 * parámetro el valor que se agregará a la cola; los nuevos elementos
 * siempre se agregan al final.
 */
int agregar(int valor) {
    nodo *n = (nodo *)malloc(sizeof(nodo));
    n->valor = valor;
    n->siguiente = NULL;

    printf("Agregando el elemento %d a la cola...\n", valor);
    if (cola == NULL && ultimo == NULL) {
        cola = n;
        ultimo = n;
    }
    else {
        ultimo->siguiente = n;
        ultimo = n;
    }

    return 0;
}

/*
 * Esta función quita un elemento de la cola, no recibe ningún
 * parámetro porque en una cola siempre se quita el elemento que
 * está al inicio.
 */
int quitar() {
    if (cola == NULL && ultimo == NULL) {
        printf("La cola está vacía, no se puede quitar ningún elemento.\n");
        return 0;
    }
    else if (cola == ultimo) {
        int valor = cola->valor;
        free(cola);
        cola = NULL;
        ultimo = NULL;
        printf("Se ha quitado el elemento %d de la cola.\n", valor);
        printf("La cola ha quedado vacía.\n");
    }
    else {
        nodo *n = cola;
        cola = n->siguiente;
        printf("Se ha quitado el elemento %d de la cola.\n", n->valor);
        free(n);
    }
}

/*
 * Muestra la cola.
 */
void mostrar() {
    nodo *n = cola;
    if (n == NULL) {
        printf("La cola está vacía.\n");
        return;
    }

    printf("Mostrando la cola...\n");
    while (n != NULL) {
        printf("\t%d\n", n->valor);
        n = n->siguiente;
    }
}

int main() {
    printf("Este programa muestra el funcionamiento de una cola dinámica.\n");
    printf("- Presiona A para insertar un nuevo elemento a la cola.\n");
    printf("- Presiona Z para quitar un elemento de la cola.\n");
    printf("- Presiona P para mostrar la cola.\n");
    printf("- Presiona Q para salir.\n");

    char key;
    while ((key = toupper(getchar())) != 'Q') {
        switch (key) {
        case 'A':
            agregar(rand());
            break;
        case 'Z':
            quitar();
            break;
        case 'P':
            mostrar();
            break;
        }
    }
    return 0;
}