Résolution d'équations du second degrés

Soyez le premier à donner votre avis sur cette source.

Vue 10 716 fois - Téléchargée 524 fois

Description

Ce code permet de résoudre une équation de second degrés par le biais d'un champ de saisi dans lequel l'équation doit être tapé ensuite le programme s'occupe de donner la ou les solutions.

Source / Exemple :


# -*- coding: cp1252 -*-

#Programme permettant de résoudre une équation de second degrés
#sous la forme de ax2+bx+c=0

from Tkinter import *
from math import *

#Declaration de la fonction qui va nous permettre de résoudre l'équation entrée

def resolveur(even):                                    #Fonction événement qui va permettre de résoudre l'équation saisi dans le champ
    delta=0
    a,b,c="","",""
    x0,x1,x2=0,0,0
    equation=str(saisi.get())
    i=0
    t=0
    while i<=len(equation):                         #La série de boucles que voici vont permettre d'extraire chacun des
        if equation[i]!="x":                        #élément qui composent l'équation afin de les affecter à des variables qui seront traitées
            a=a+equation[i]
        else:
            i=i+2
            break
        i=i+1
    while i<=len(equation):
        i=i+1
        if equation[i]!="x":
            b=b+equation[i]
        else:
            i=i+2
            break
    while i<=len(equation):
        if equation[i]!="=":
            c=c+equation[i]
        if equation[i]=="=":
            break
        i=i+1
    a,b,c=float(a),float(b),float(c)        #Les variables sont redéfinis comme nombre à virgule afin d'effectuer les calculs qui vont suivrent
    delta=((b**2)-4*a*c)

    #En fonction de la valeur de delta le programme se charge de donner une solution
    
    if delta>0:
        x1=(-b-sqrt(delta))/(2*a)
        x2=(-b+sqrt(delta))/(2*a)
        sol1=Tk()
        sol1.title("Solution")
        Label(sol1,text="L'équation "+str(equation)+" a pour solution "+str(x1)+" ou "+str(x2)).pack()
        Button(sol1,text="Ok",command=sol1.destroy).pack()
        sol1.mainloop()
        
    if delta==0:
        x0=-b/(2*a)
        sol2=Tk()
        sol2.title("Solution")
        Label(sol2,text="L'équation "+str(equation)+" a pour solution "+str(x0)).pack()
        Button(sol2,text="Ok",command=sol2.destroy).pack()
        sol2.mainloop()

    if delta<0:
        sol3=Tk()
        sol3.title("Solution")
        Label(sol3,text="L'équation "+str(equation)+" n'admet aucune solution ").pack()
        Button(sol3,text="Ok",command=sol3.destroy).pack()
        sol3.mainloop()
        
         
    

# --------------Programme principal------------------#

fen=Tk()
fen.title("Résolution d'équations du second degrès V.1.0")                    #Titre

Label(text="Veuillez entrer ci-dessous une équation de second degrés sous la forme de ax2+bx+c=0",fg='red').grid(row=0,column=0)

saisi=Entry(fen)                                                    #Création du champ de saisi
saisi.bind("<Return>",resolveur)
saisi.grid(row=1,column=0)
Button(fen,text="Quitter",fg='blue',command=fen.quit).grid(row=3,column=0)
fen.mainloop()

fen2=Tk()
Label(fen2,text="Au revoir :)",fg='red').pack()
Button(fen2,text="Ok",command=fen.quit).pack()
fen2.mainloop()

fen2.destroy()

fen.destroy()

Conclusion :


Petit bug quand il s'agit de quitter certaines fenêtres du programme.
Mais dans l'ensemble ça tourne ;)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

dbs669
Messages postés
1
Date d'inscription
mardi 3 avril 2007
Statut
Membre
Dernière intervention
16 avril 2007
-
moi je met 5/10 car pour a b et c il ne prend pas en compte si il sont negatif, ce qui change complètement les résultats
Voici le morceau de code a modifier:

while i<=len(equation): #La série de boucles que voici vont permettre d'extraire chacun des
if equation[i]!="x": #élément qui composent l'équation afin de les affecter à des variables qui seront traitées
a=a+equation[i]
else:
i=i+2 <-- remplacer le 2 par 1
break
i=i+1
while i<=len(equation):
i=i+1
if equation[i]!="x":
b=b+equation[i]
else:
i=i+2 <-- remplacer le 2 par 1
break

a par ca aucun autre problème a signaler
aera group
Messages postés
390
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
8 novembre 2010
10 -
Le code est correcte, et à l'air de fonctionner même si l'interface graphique laisse à désirer (entre autre, la méthode que tu utilise pour afficher une nouvelle fenêtre à l'ouverture, c'est un peu du bricolage mais bon, ça fonctionne !!!). Je met 10/10 tout de même.
______
Aéra
Shakan972
Messages postés
44
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
17 avril 2015
-
C'est bon j'ai corrigé ^^
HCD
Messages postés
86
Date d'inscription
jeudi 18 août 2005
Statut
Membre
Dernière intervention
20 février 2007
-
J'aimerais bien que tu corrige complètement ton code.

1° remplacer dans le TITRE et dans le texte du script "INEQUATION" par "EQUATION".
Voici ce que j'ai extrait:
__________RÉSOLUTION D'INÉQUATIONS DU SECOND
__________Description : Ce code permet de résoudre une équation de second degrès par le biais d'un champ de saisi dans lequel l'EQUATION doit être tapé ensuite le programme s'occupe de donner la ou les solutions.
__________def resolveur(even): #Fonction événement qui va permettre de résoudre l'EQUATION saisiE dans le champ
__________while i<=len(equation): #La série de boucles que voici VA permettre d'extraire chacun des
if equation[i]!="x": #élément qui composent l'inéquation afin de les affecter à des variables qui seront

2° remplacer "degrès" par "degrés"

HCD
Shakan972
Messages postés
44
Date d'inscription
samedi 21 mai 2005
Statut
Membre
Dernière intervention
17 avril 2015
-
A purée mais où avais-je la tête équation puisque =
et inéquation pour < >

dsl pour l'erreur je corrige tout de suite X(

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.