summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPixel <Pixel>2001-05-02 02:15:48 +0000
committerPixel <Pixel>2001-05-02 02:15:48 +0000
commit2160d5e1b4e0651ec0dc4ac8f27decc57cf1a8cb (patch)
treeabab53e3ad9d9c25682bd753e838c317595f52ff
parent4dc4eca070554700e3e4fa76f034fdf41710a1be (diff)
Hop
-rw-r--r--doc/bib.tex5
-rw-r--r--lib/interface.c2
-rw-r--r--lib/pile.c2
-rw-r--r--lib/polynom.c40
4 files changed, 40 insertions, 9 deletions
diff --git a/doc/bib.tex b/doc/bib.tex
index 1203fbb..841a9fd 100644
--- a/doc/bib.tex
+++ b/doc/bib.tex
@@ -2,6 +2,7 @@
% pour citer le Tanenbaum : \cite{Tanenbaum}
% pour citer le Tanenbaum page 238 : \cite[page 238]{Tanenbaum}
-\bibitem[COR]{Cormen} T. Cormen, C. Leiserson, R. Rivest \textit{Introduction ŕ l'algorithmique}, Dunod.
-
+\bibitem[LIN1]{RedBook} R. Stones N. Matthew \textit{Beginning Linux Programming 2nd Edition}, Wrox.
+\bibitem[UNI1]{unixetc} G. Hansel J-M. Champarnaud \textit{Passeport pour Unix et C}, Thomson Publishing.
+http://shekel.jct.ac.il/cc-res/online-doc/ps-tut/postscript.html .
\end{thebibliography}
diff --git a/lib/interface.c b/lib/interface.c
index 001c01d..e3fbe7a 100644
--- a/lib/interface.c
+++ b/lib/interface.c
@@ -16,6 +16,8 @@ void supprime(char * ch) {
void inserer(char * ch, char c) {
int i;
+ ch[strlen(ch) + 1] = '\0';
+
for (i = strlen(ch) - 1; i != -1; i--) {
*(ch + i + 1) = *(ch + i);
}
diff --git a/lib/pile.c b/lib/pile.c
index 6459019..02a418a 100644
--- a/lib/pile.c
+++ b/lib/pile.c
@@ -55,7 +55,7 @@ void push_pile(char *st)
pushcontext(_("it's a name"));
if (*st == '\'') {
st++;
- st[strlen(st) + 1] = 0;
+ st[strlen(st) - 1] = 0;
}
push_pile_string(Estrdup(st));
popcontext();
diff --git a/lib/polynom.c b/lib/polynom.c
index 472eb24..99c5a75 100644
--- a/lib/polynom.c
+++ b/lib/polynom.c
@@ -224,21 +224,31 @@ polynome ply_multiplication(polynome poly1, polynome poly2)
polynome ply_division(polynome dividende, polynome diviseur)
{ /* division de deux polynomes */
- polynome interdividende = dividende, interdiviseur = NULL, inter = NULL, reste = dividende, resultat = NULL, r = NULL;
+ polynome interdividende = ply_copy(dividende), interdiviseur = NULL, inter = NULL, reste = dividende, resultat = NULL, r = NULL;
+#ifdef DEBUG
printf("On divise %s", ply_affichage(dividende));
printf("par %s\n", ply_affichage(diviseur));
printf("interdividende degre = %u\n", interdividende->degre);
printf("diviseur degre = %u\n", diviseur->degre);
+#endif
while ((interdividende) && (interdividende->degre >= diviseur->degre)) {
- inter = ply_constr(rat_division(dividende->coef, diviseur->coef), dividende->degre - diviseur->degre);
+ inter = ply_constr(rat_division(interdividende->coef, diviseur->coef), interdividende->degre - diviseur->degre);
+#ifdef DEBUG
printf("On trouve qu'il nous faut soustraire %s fois\n", ply_affichage(inter));
+#endif
r = ply_addition(resultat, inter);
+#ifdef DEBUG
printf("Resultat intermédiaire %s\n", ply_affichage(r));
+#endif
interdiviseur = ply_multiplication(diviseur, inter);
+#ifdef DEBUG
printf("On soustrait donc %s\n", ply_affichage(interdiviseur));
+#endif
reste = ply_soustraction(interdividende, interdiviseur);
+#ifdef DEBUG
printf("Reste intermédiaire %s\n", ply_affichage(reste));
+#endif
ply_destruct(resultat);
ply_destruct(inter);
ply_destruct(interdividende);
@@ -252,13 +262,31 @@ polynome ply_division(polynome dividende, polynome diviseur)
polynome ply_modulo(polynome dividende, polynome diviseur)
{ /* reste de la division de deux polynomes */
- polynome interdividende = dividende, interdiviseur = NULL, inter = NULL, reste = dividende, resultat = NULL, r = NULL;
+ polynome interdividende = ply_copy(dividende), interdiviseur = NULL, inter = NULL, reste = dividende, resultat = NULL, r = NULL;
- while (interdividende->degre >= diviseur->degre) {
- inter = ply_constr(rat_division(dividende->coef, diviseur->coef), dividende->degre - diviseur->degre);
- interdiviseur = ply_multiplication(diviseur, inter);
+#ifdef DEBUG
+ printf("On divise %s", ply_affichage(dividende));
+ printf("par %s\n", ply_affichage(diviseur));
+ printf("interdividende degre = %u\n", interdividende->degre);
+ printf("diviseur degre = %u\n", diviseur->degre);
+#endif
+ while ((interdividende) && (interdividende->degre >= diviseur->degre)) {
+ inter = ply_constr(rat_division(interdividende->coef, diviseur->coef), interdividende->degre - diviseur->degre);
+#ifdef DEBUG
+ printf("On trouve qu'il nous faut soustraire %s fois\n", ply_affichage(inter));
+#endif
r = ply_addition(resultat, inter);
+#ifdef DEBUG
+ printf("Resultat intermédiaire %s\n", ply_affichage(r));
+#endif
+ interdiviseur = ply_multiplication(diviseur, inter);
+#ifdef DEBUG
+ printf("On soustrait donc %s\n", ply_affichage(interdiviseur));
+#endif
reste = ply_soustraction(interdividende, interdiviseur);
+#ifdef DEBUG
+ printf("Reste intermédiaire %s\n", ply_affichage(reste));
+#endif
ply_destruct(resultat);
ply_destruct(inter);
ply_destruct(interdividende);