1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #include "num.h"
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
-
- 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;
- }
|