/*
 * La tarjeta de transporte en C: un struct con los datos y funciones aparte
 * que reciben un puntero al struct. Es el punto de partida para comparar con
 * la clase TransitCard.
 */
#include <stdio.h>

struct card {
    char id[8];
    int balance;            /* saldo en céntimos */
};

void card_recharge(struct card *c, int amount) {
    c->balance += amount;
}

int card_pay(struct card *c, int fare) {
    if (c->balance < fare)
        return 0;           /* no alcanza el saldo */
    c->balance -= fare;
    return 1;
}

int main(void) {
    struct card c = { "A-001", 0 };
    card_recharge(&c, 1000);
    card_pay(&c, 250);
    printf("%s: %d céntimos\n", c.id, c.balance);

    c.balance = -500;       /* nada lo impide */
    printf("%s: %d céntimos\n", c.id, c.balance);
    return 0;
}
