Add comment to polyCreux

This commit is contained in:
2024-04-10 11:27:14 +02:00
parent 399252b68b
commit 5af3f35482
2 changed files with 36 additions and 1 deletions

View File

@@ -105,19 +105,25 @@ class polyCreux:
self.tete = monome
def add(self, monome):
# Ajout d'un monome dans un polynome creux
if self.tete is None:
# Si le polynome est vide on ajoute le monome en tete
self.tete = monome
return
if self.tete.degre < monome.degre:
# Si le degre du monome est superieur a celui du premier monome du polynome on ajoute le monome en tete
monome.next = self.tete
self.tete = monome
return
current = self.tete
# On parcourt le polynome pour trouver la place du monome
while current:
if current.degre == monome.degre:
# Si le degre du monome est egal a celui du monome courant on ajoute les coefficients
current.coef += monome.coef
return
if current.next is None or current.next.degre < monome.degre:
# Si le degre du monome est superieur a celui du monome suivant on ajoute le monome
monome.next = current.next
current.next = monome
return
@@ -125,15 +131,20 @@ class polyCreux:
def afficher(self):
current = self.tete
# On parcourt le polynome pour afficher les monomes
while current:
if current.next is None:
# Si le monome est le dernier on affiche le monome sans le +
if current.degre == 0:
# Si le degre du monome est 0 on affiche le coefficient
print(f"{current.coef}")
current = current.next
elif current.degre == 1:
# Si le degre du monome est 1 on affiche le coefficient et X
print(f"{current.coef}X")
current = current.next
else:
# Sinon on affiche le coefficient, X et le degre
print(f"{current.coef}X^{current.degre}")
current = current.next
else:
@@ -143,62 +154,79 @@ class polyCreux:
def evaluate(self, x):
current = self.tete
result = 0
# On parcourt le polynome pour evaluer le polynome en x
while current:
# On ajoute le resultat du monome courant au resultat
result += current.coef * (x ** current.degre)
current = current.next
return result
def multiply(self, scalar):
# On parcourt le polynome pour multiplier les coefficients par un scalaire
current = self.tete
while current:
# On multiplie le coefficient par le scalaire
current.coef *= scalar
current = current.next
def delete_from_degre(self, degre):
# Suppression d'un monome de degre donne
current = self.tete
if current.degre == degre:
# Si le monome a supprimer est en tete on le supprime
self.tete = current.next
return
while current.next:
# On parcourt le polynome pour trouver le monome a supprimer
if current.next.degre == degre:
current.next = current.next.next
return
current = current.next
def __add__(self, other):
# Addition de deux polynomes creux
current1 = self.tete
current2 = other.tete
LC = polyCreux()
while current1 or current2:
# On parcourt les deux polynomes
degre1 = current1.degre if current1 else -1
degre2 = current2.degre if current2 else -1
if degre1 == degre2:
# Si les degres des monomes sont egaux on ajoute les coefficients
LC.add(nodeMonome(current1.coef + current2.coef, degre1))
current1 = current1.next
current2 = current2.next
elif degre1 > degre2:
# Si le degre du monome du premier polynome est superieur on ajoute le monome du premier polynome
LC.add(nodeMonome(current1.coef, degre1))
current1 = current1.next
else:
# Sinon on ajoute le monome du deuxieme polynome
LC.add(nodeMonome(current2.coef, degre2))
current2 = current2.next
return LC
def __sub__(self, other):
# Soustraction de deux polynomes creux
current1 = self.tete
current2 = other.tete
LC = polyCreux()
while current1 or current2:
# On parcourt les deux polynomes
degre1 = current1.degre if current1 else -1
degre2 = current2.degre if current2 else -1
if degre1 == degre2:
# Si les degres des monomes sont egaux on soustrait les coefficients
LC.add(nodeMonome(current1.coef - current2.coef, degre1))
current1 = current1.next
current2 = current2.next
elif degre1 > degre2:
# Si le degre du monome du premier polynome est superieur on ajoute le monome du premier polynome
LC.add(nodeMonome(current1.coef, degre1))
current1 = current1.next
else:
# Sinon on ajoute le monome du deuxieme polynome
LC.add(nodeMonome(-current2.coef, degre2))
current2 = current2.next
return LC

View File

@@ -49,9 +49,16 @@ def test_polycreux():
pc.add(nodeMonome(10, 0))
pc.add(nodeMonome(44, 100))
pc3 = polyCreux(nodeMonome(6, 2))
pc3.add(nodeMonome(4, 1))
pc3.add(nodeMonome(2, 0))
e = pc.evaluate(1)
print(e)
e = pc.evaluate(35)
e = pc.evaluate(-1)
print(e)
e = pc3.evaluate(1)
print(e)
e = pc3.evaluate(-1)
print(e)
pc.afficher()