#include "num.h" #include #include #include void printLnNum( struct NumContainer num ) { if ( num.t == INT ) { printf("%d\n", num.n.vali); } else { printf("%f\n", num.n.valf); } } void printNum( struct NumContainer num ) { if ( num.t == INT ) { printf("%d ", num.n.vali); } else { printf("%f ", num.n.valf); } } char evalasBool( struct NumContainer num ) { if (num.t == INT) { if (num.n.vali == 0) { return 0; } else { return 1; } } else { if (num.n.valf == 0.0) { return 0; } else { return 1; } } } struct NumContainer readNum(char* s) { char* original = s; int is_int = 1; struct NumContainer res; while (*s != '\0') { if ( !isdigit(*s) ) { if ( *s == '.' && is_int ) { is_int = 0; } else { fprintf(stderr, "'%s' is not a number", original); exit(1); } } ++s; } if (is_int) { res.t = INT; res.n.vali = atoi(original); } else { res.t = FLOAT; res.n.valf = atof(original); } return res; }