On se propose de concevoir une interface graphique permettant de saisir deux entiers A et B tels que (10 ≤ A ≤ 1000) et (A < B ≤ 10000), puis d’afficher tous les nombres d’Armstrong compris entre A et B.
Un nombre d’Armstrong N est un entier positif égal à la somme de ses propres chiffres, élevés chacun à la puissance du nombre de chiffres de N.
Exemple :
Pour A = 200 et B = 1700, le programme affiche : 370, 371, 407, 1634
En effet :
70 = 33 + 73 + 03
371 = 33 + 73 + 13
407 = 43 + 03 + 73
1634 = 14 + 64 + 34 + 44
Pour A = 500 et B = 1500, le programme affiche : Aucun nombre d’Armstrong dans cet intervalle
L’algorithme a pour rôle de :
1- lire deux entiers 𝐴 et B, avec les conditions : 10≤𝐴≤1000 et 𝐴<𝐵≤10000
2- explorer tous les entiers compris entre A et B.
3- vérifier pour chaque entier N s’il est un nombre d’Armstrong
4- afficher uniquement les nombres d’Armstrong trouvés dans l’intervalle.
Dans cet algorithme, On va utiliser trois fonctions et une procédure :
1 2 3 4 5 6 |
Algorithme nombres_ronds Debut a <- saisir('a',10,30) b <- saisir('b',a+1,99) nbr_armstrong(a,b) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
a | entier |
b | entier |
Cette fonction saisit un nombre entier N entre deux bornes
1 2 3 4 5 6 7 8 9 10 |
fonction saisie(variable,min,max):entier Début Ecrire('donner ', variable ,' entre ', min ,' et ', str(max),': ') Lire(n) Tant que (n<min) ou (n>max) aire Ecrire('donner ', variable ,' entre ', min ,' et ', str(max),': ') Lire(n) Fin tant que retourner n Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
Cette fonction permet de qui permet de retourner N à la puissance P.
1 2 3 4 5 6 7 8 |
fonction puissance(n,p:entier): entier Début a <- 1 Pour i de 1 à p faire a <- a * n Fin pour retourner a Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
a | entier |
i | entier |
Cette fonction retourne la somme des chiffres de N élevé chacun à la puissance qui correspond aux nombres de chiffres de l’entier N en
exploitant la fonction PUISS.
1 2 3 4 5 6 7 8 9 |
fonction sommepuiss(n:entier): entier Début ch <- Convch(n) s <- 0 Pour i de 0 à long(ch)-1 faire s <- s+puissance(Valeur(ch[i]),long(ch)) Fin pour retourner s Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
s | entier |
ch | chaîne des caractères |
Cette procédure recherche et affiche tous les nombres d'Armstrong compris entre A et B.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Procedure nbr_armstrong (a:entier;b:entier) Début liste <- '' Pour i de a à b faire Si i=sommepuiss(i) alors liste <- liste+str(i)+' ' Fin si Fin pour Si long(liste) !=0 alors Ecrire ("Les nombres Armstrong sont ", liste) sinon Ecrire ("Aucun nombre Armstrong") Fin si Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
liste | chaine |
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 |
def saisir(variable,min,max): n=int(input('donner '+ variable +' entre '+ str(min) +' et '+ str(max)+': ')) while (n<min) or (n>max) : n=int(input('donner '+variable +' entre '+ str(min) +' et '+ str(max)+': ')) return n def puissance(n,p): a=1 for i in range(p): a=a*n return a def sommepuiss(n): ch=str(n) s=0 for i in range (len(ch)): s=s+puissance(int(ch[i]),len(ch)) return s def nbr_armstrong(a,b): liste='' for i in range(a,b+1): if i==sommepuiss(i) : liste=liste+str(i)+' ' if len(liste) !=0 : print ("Les nombres Armstrong sont ", liste) else: print("Aucun nombre Armstrong") #programme principal a=saisir('a',10,1000) b=saisir('b',a+1,10000) nbr_armstrong(a,b) |
Exécution du programme :
Pour créer une application en Python et Designer QT afin de saisir deux entiers A et B tels que (10 ≤ A ≤ 1000) et (A < B ≤ 10000), puis d’afficher tous les nombres d’Armstrong compris entre A et B, on va suivre ces étapes:
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLabel
nommé 'msg' pour afficher les messages générés par le programme
QLineEdit
nommé 'a' pour entrer le nombre A
QLineEdit
nommé 'b' pour entrer le nombre B
QPushButton
nommé 'afficher_bt' pour chercher et afficher tous les nombres d’Armstrong compris entre A et B
Enregistrez le fichier avec l'extension .ui
, par exemple bac-pratique-4-interface.ui.ui
.
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 53 54 |
from PyQt5.uic import loadUi from PyQt5.QtWidgets import QApplication app = QApplication([]) windows = loadUi ("bac-pratique-4-interface.ui") def puissance(n,p): a=1 for i in range(p): a=a*n return a def sommepuiss(n): ch=str(n) s=0 for i in range (len(ch)): s=s+puissance(int(ch[i]),len(ch)) return s def nbr_armstrong(a,b): liste='' for i in range(a,b+1): if i==sommepuiss(i) : liste=liste+str(i)+' ' if len(liste) !=0 : print ("Les nombres Armstrong sont ", liste) else: print("Aucun nombre Armstrong") def play(): windows.msg.clear() a = int(windows.a.text()) b = int(windows.b.text()) if (a>=10) and (a<=1000): if (b>a) and (b<=10000): liste='' for i in range(a,b+1): if i==sommepuiss(i) : liste=liste+str(i)+' ' if len(liste) !=0 : windows.msg.setText("Les nombres Armstrong sont "+ str(liste)) else: windows.msg.setText("Aucun nombre Armstrong") else: windows.msg.setText('B doit etre dans ]'+str(a)+'..10000]!' ) else: windows.msg.setText('A doit etre dans ]10..1000]!' ) windows.afficher_bt.clicked.connect(play) windows.show() app.exec_() |
Exécution du programme
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info