From 78dcc3729881bb6b3937da195bc070ca96cb049b Mon Sep 17 00:00:00 2001 From: biouman Date: Tue, 1 May 2001 12:08:10 +0000 Subject: *** empty log message *** --- include/scalaires.h | 11 ++++++++--- lib/pile.c | 8 ++++---- lib/scalaires.c | 37 +++++++++++++++++++++++++++++++++++-- po/cat-id-tbl.c | 30 +++++++++++++++++------------- 4 files changed, 64 insertions(+), 22 deletions(-) diff --git a/include/scalaires.h b/include/scalaires.h index a13b96a..fcd0b00 100644 --- a/include/scalaires.h +++ b/include/scalaires.h @@ -6,13 +6,18 @@ typedef struct { unsigned int denom; } rationnel; -rationnel rat_constr_zero(void); /* renvoie 0 */ +typedef enum typedisplay { + HEX, + DEC, + OCT, + FLT +} typedisplay; +extern typedisplay display; +rationnel rat_constr_zero(void); /* renvoie 0 */ rationnel rat_constr(int num, int denom); /* cree une fraction */ - rationnel rat_constr_from_double(double flt); /* cree une fraction a partir d un double */ - void rat_destruct(rationnel rat); /* destructeur */ double rat_to_double(rationnel rat); /* obtention du double correspondant a un rationnel */ rationnel rat_addition(rationnel rat1, rationnel rat2); /* addition */ diff --git a/lib/pile.c b/lib/pile.c index a7d8d47..10991fc 100644 --- a/lib/pile.c +++ b/lib/pile.c @@ -280,10 +280,10 @@ void act_pile(int func) ply_destruct(operande2.poly); ply_destruct(operande1.poly); } else { - exception(1, _("act_pile: OP_EXP invalid arguments")); + exception(1, _("act_pile: OP_EXP invalid power")); } } else { - exception(1, _("act_pile: OP_EXP invalid arguments")); + exception(1, _("act_pile: OP_EXP empty polynom")); } } else { exception(1, _("act_pile: OP_EXP invalid arguments")); @@ -350,10 +350,10 @@ void act_pile(int func) ply_destruct(operande1.poly); ply_destruct(operande2.poly); } else { - exception(1, _("act_pile: OP_FUNC_CALL invalid arguments")); + exception(1, _("act_pile: OP_FUNC_CALL incorrect value for 2nd arg")); } } else { - exception(1, _("act_pile: OP_FUNC_CALL invalid arguments")); + exception(1, _("act_pile: OP_FUNC_CALL arg2 is an empty polynom")); } } else { exception(1, _("act_pile: OP_FUNC_CALL invalid arguments")); diff --git a/lib/scalaires.c b/lib/scalaires.c index ab97084..d2f24fb 100644 --- a/lib/scalaires.c +++ b/lib/scalaires.c @@ -12,8 +12,9 @@ #define _(x) x #endif - #define PRECISION 1E6 +typedisplay display=DEC; + static int pgcd(int a, int b) { if (a < b) @@ -54,7 +55,7 @@ rationnel rat_constr(int num, int denom) temp.num = sgnnum * sgndenom * num / pgcd(num, denom); temp.denom = denom / pgcd(num, denom); } else { - exception(1, _("rat_constr: division by zero")); + exception(2, _("rat_constr: division by zero")); } return temp; @@ -113,3 +114,35 @@ rationnel rat_division(rationnel rat1, rationnel rat2) return rat_constr(rat1.num * rat2.denom, rat1.denom * rat2.num); } + +char *rat_to_string(rationnel rat) +{ + char resultat[128]; + char temp[64]; + + if (rat.num<0) { + rat.num=-rat.num; + strcat(resultat,"-"); + } else { + strcat(resultat,"+"); + } + + switch(display) { + case DEC: + sprintf(temp,"%d/%d", rat.num, rat.denom); + break; + case HEX: + sprintf(temp,"%x/%x", rat.num, rat.denom); + break; + case OCT: + sprintf(temp,"%o/%o", rat.num, rat.denom); + break; + case FLT: + sprintf(temp,"%f", rat_to_double(rat)); + break; + } + + strcat(resultat, temp); + return resultat; + +} diff --git a/po/cat-id-tbl.c b/po/cat-id-tbl.c index 3c0c2fd..4c597d9 100644 --- a/po/cat-id-tbl.c +++ b/po/cat-id-tbl.c @@ -36,18 +36,22 @@ const struct _msg_ent _msg_tbl[] = { {"act_pile: OP_MUL invalid arguments", 27}, {"act_pile: OP_DIV invalid arguments", 28}, {"act_pile: OP_MOD invalid arguments", 29}, - {"act_pile: OP_EXP invalid arguments", 30}, - {"act_pile: OP_ASSIGN empty string", 31}, - {"act_pile: OP_ASSIGN invalid arguments", 32}, - {"act_pile: OP_MOINS_UNARY invalid argument", 33}, - {"act_pile: OP_FUNC_CALL invalid arguments", 34}, - {"act_pile: OP_FUNC_CALL incorrect argument number", 35}, - {"act_pile: Unknown operator", 36}, - {"\t-- Printing Stack\n", 37}, - {"\t-- End Printing Stack\n", 38}, - {"ply_affichage: strcat error, not enoug space in buffer", 39}, - {"rat_constr: division by zero", 40}, - {"division by zero", 41}, + {"act_pile: OP_EXP invalid power", 30}, + {"act_pile: OP_EXP empty polynom", 31}, + {"act_pile: OP_EXP invalid arguments", 32}, + {"act_pile: OP_ASSIGN empty string", 33}, + {"act_pile: OP_ASSIGN invalid arguments", 34}, + {"act_pile: OP_MOINS_UNARY invalid argument", 35}, + {"act_pile: OP_FUNC_CALL incorrect value for 2nd arg", 36}, + {"act_pile: OP_FUNC_CALL arg2 is an empty polynom", 37}, + {"act_pile: OP_FUNC_CALL invalid arguments", 38}, + {"act_pile: OP_FUNC_CALL incorrect argument number", 39}, + {"act_pile: Unknown operator", 40}, + {"\t-- Printing Stack\n", 41}, + {"\t-- End Printing Stack\n", 42}, + {"ply_affichage: strcat error, not enoug space in buffer", 43}, + {"rat_constr: division by zero", 44}, + {"division by zero", 45}, }; -int _msg_tbl_length = 41; +int _msg_tbl_length = 45; -- cgit v1.2.3