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

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

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.