Solution Algorithmique
Dans cet algorithme, On va utiliser trois fonctions et une procédure:
Algorithme du programme Principal
|
Algorithme autonombre Debut n<-saisie_entier('n',20,50) m<-saisie_entier('m',n+1,100) afficher_autonombres(n,m) Fin |
Déclaration des objets
Objet |
Type / Nature |
m |
entier |
n |
entier |
La fonction saisie_entier
Cette fonction saisit un entier entre deux bornes a et b
|
fonction saisie_entier(nom_variable:chaine;a:entier;b:entier):entier Début Ecrire("donner "+nom_variable+" entre "+a+" et "+b+": "") Lire(ch) Tant que (verif_chiffres(ch)=Faux) faire Ecrire("donner "+nom_variable+" entre "a+" et "+b+": ") Lire(ch) Fin tant que retourner ch Fin |
Déclaration des objets
Objet |
Type / Nature |
n |
entier |
La fonction sommechiffres
Cette fonction calcule et retourne la somme des chiffres qui forment un entier donné.
|
fonction sommechiffres(x:entier):entier Début S <- 0 Tant que (X ≠ 0 ) Faire S <- S + X Mod 10 X <- X Div 10 Fin Tant que Retourner S Fin |
Déclaration des objets
Objet |
Type / Nature |
S |
entier |
La fonction verifier_autonombre
Cette fonction vérifie si un entier est autonombre.
|
Fonction verifier_autonombre(x:entier) : booleen DEBUT i<-10 s<-0 Tant que (s!=x) et i<x faire s<-sommechiffres(i)+i i<-i+1 Fin tant que Si x=s alors retourner Faux Sinon retourner Vrai Fin si FIN |
Déclaration des objets
Objet |
Type / Nature |
i |
entier |
s |
entier |
La procédure afficher_autonombres
Cette procédure affiche les nombres autonombres entre m et n.
|
Procedure afficher_autonombres(m:entier;n:entier) DEBUT Ecrire('Le(s) nombre(s) Autonombre(s):') Pour i de n à m+1 faire Si verifier_autonombre(i) alors Ecrire(i) Finsi Finpour FIN |
Déclaration des objets
Objet |
Type / Nature |
i |
entier |
Solution en Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
def saisie_entier(nom_variable,a,b): n=int(input("donner "+nom_variable+" entre "+str(a)+" et "+str(b)+": ")) while (n<a) or (n>b) : n=int(input("donner "+nom_variable+" entre "+str(a)+" et "+str(b)+": ")) return n def sommechiffres(x): s=0 while x!= 0 : s=s+x%10 x=x // 10 return s def verifier_autonombre(x): i=10 s=0 while (s!=x) and i<x : s=sommechiffres(i)+i i=i+1 if x==s: return False else: return True def afficher_autonombres(n,m): print ('Le(s) nombre(s) Autonombre(s):') for i in range(n,m+1): if verifier_autonombre(i): print(str(i),end=', ') #programme principal n=saisie_entier('n',20,50) m=saisie_entier('m',n+1,100) afficher_autonombres(n,m) |
Exécution du programme:
Solution en Python et Designer QT
Pour créer une application en Python et Designer QT qui saisit deux entiers N (20≤N≤50) et M (N1- Créer l'interface graphique avec Qt Designer
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'm' pour entrer un nombre m
QLineEdit
nommé 'n' pour entrer un nombre n
QLabel
nommé 'msg' pour contenir les messages d'erreur et la liste des nombres autonombres
QPushButton
nommé 'affiche_bt' pour rechercher les nombres autonombres entre m et n
Enregistrez le fichier avec l'extension .ui
, par exemple autonombre-interface.ui
.
2- Créer le script Python pour l'application
Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
from PyQt5.uic import loadUi from PyQt5.QtWidgets import QApplication app = QApplication([]) windows = loadUi ("autonombre-interface.ui") def sommechiffres(x): s=0 while x!= 0 : s=s+x%10 x=x // 10 return s def verifier_autonombre(x): i=10 s=0 while (s!=x) and i<x : s=sommechiffres(i)+i i=i+1 if x==s: return False else: return True def play(): windows.msg.clear() m = int(windows.m.text()) n = int(windows.n.text()) if 20<=n<=50 and n <m<=100 : resultat='' for i in range(n,m+1): if verifier_autonombre(i): resultat=resultat+ str(i)+', ' if resultat!='': windows.msg.setText("Le(s) nombre(s) Autonombre(s): "+resultat) else: windows.msg.setText("Aucun Autonombre entre "+str(n)+" et "+str(m)) else: windows.msg.setText(" Veuillez respecter : 20<=N<=50 et N<M<=100") windows.afficher_bt.clicked.connect(play) windows.show() app.exec_() |
Exécution du programme
Vous pouvez voir aussi :