summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbiouman <biouman>2001-05-01 12:08:10 +0000
committerbiouman <biouman>2001-05-01 12:08:10 +0000
commit78dcc3729881bb6b3937da195bc070ca96cb049b (patch)
tree147429ecf5a9419745d5496cb011d0cc33a22532
parent655f3b2663b9909656b896cf47ad949b4e9644a8 (diff)
*** empty log message ***
-rw-r--r--include/scalaires.h11
-rw-r--r--lib/pile.c8
-rw-r--r--lib/scalaires.c37
-rw-r--r--po/cat-id-tbl.c30
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;