diff options
Diffstat (limited to 'lib/scalaires.c')
-rw-r--r-- | lib/scalaires.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/lib/scalaires.c b/lib/scalaires.c index d2f24fb..33b7ef2 100644 --- a/lib/scalaires.c +++ b/lib/scalaires.c @@ -4,6 +4,7 @@ * */ #include <math.h> +#include <string.h> #include "scalaires.h" #include "exceptions.h" #ifdef HAVE_CONFIG_H @@ -115,6 +116,7 @@ rationnel rat_division(rationnel rat1, rationnel rat2) } + char *rat_to_string(rationnel rat) { char resultat[128]; @@ -129,13 +131,22 @@ char *rat_to_string(rationnel rat) switch(display) { case DEC: - sprintf(temp,"%d/%d", rat.num, rat.denom); + if (rat.denom==1) + sprintf(temp,"%d", rat.num); + else + sprintf(temp,"%d/%d", rat.num, rat.denom); break; case HEX: - sprintf(temp,"%x/%x", rat.num, rat.denom); + if (rat.denom==1) + sprintf(temp,"%x", rat.num); + else + sprintf(temp,"%x/%x", rat.num, rat.denom); break; - case OCT: - sprintf(temp,"%o/%o", rat.num, rat.denom); + case OCT: + if (rat.denom==1) + sprintf(temp,"%o", rat.num); + else + sprintf(temp,"%o/%o", rat.num, rat.denom); break; case FLT: sprintf(temp,"%f", rat_to_double(rat)); @@ -143,6 +154,6 @@ char *rat_to_string(rationnel rat) } strcat(resultat, temp); - return resultat; + return Estrdup(resultat); } |