On se propose d'écrire un algorithme et un programme Python permettant de saisir deux entiers N (200≤N≤999999) et M (3≤M≤10), puis d’afficher la transformation Powertrain de l’entier N ainsi que celles des M entiers consécutifs qui le suivent.
La transformation Powertrain d’un entier X consiste à générer un entier Y à partir des chiffres de X, en multipliant dans l’ordre chaque chiffre de rang impair élevé à la puissance du chiffre de rang pair.
Il est à noter que :
- Si le nombre de chiffres de X est impair alors le dernier chiffre est élevé à la puissance 1.
- Si un chiffre de rang impair est égal à zéro et il est suivi d’un zéro alors la puissance 00 sera remplacée par 1.
Exemples :
- Pour X = 523, le nombre généré est Y = 52 x 31 = 25 x 3 = 75
- Pour X = 160071, le nombre généré est Y = 16 x 00 x 71 = 1 x 1 x 7 = 7
Dans cet algorithme, On va utiliser trois fonctions et une procédure:
Algorithme du programme Principal
1 2 3 4 5 6 |
Algorithme autonombre Debut n<-saisie_entier('n',200,999999) m<-saisie_entier('m',3,10) chercher(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
1 2 3 4 5 6 7 8 9 10 |
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 puissance
Cette fonction calcule et retourne la valeur d’un entier A élevé à la puissance B ( A et B deux entiers positifs).
1 2 3 4 5 6 7 8 |
Fonction Puissance(A, B : Entier) : Entier Début P<-1 Pour K de 1 à B Faire P <- P * A Fin Pour Retourner P Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
P | entier |
La fonction trasformer
Cette fonction applique la transformation Powertrain d’un entier X
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Fonction transformer(x:entier) : entier DEBUT ch<-Convch(x) y<-1 Pour i de 0 à long(ch)-1 faire Si i mod 2 =0 alors a<-int(ch[i]) Sinon # si le rang i est impair #multiplier dans l’ordre chaque chiffre de rang impair élevé #à la puissance du chiffre de rang pair y<-y*puissance(a,Valeur(ch[i])) Fin pour Si long(ch) mod 2 != 0 alors y<-y*a Fin si retourner y FIN |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
y | entier |
a | entier |
ch | chaîne des caractères |
La procédure chercher
Cette procédure calcule la transformation Powertrain de l’entier N ainsi que celles des M entiers consécutifs en les affichant.
1 2 3 4 5 6 7 8 |
Procedure chercher(m:entier;n:entier) DEBUT Ecrire('La transformation de '+n+' et les '+m+' entiers suivants sont:') Ecrire(transformer(n)," - ") Pour i de 0 à m-1 faire Ecrire(transformer(n+i+1)," - ") Fin pour FIN |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
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 |
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 puissance(a,b): p=1 for k in range(1,b+1): p=p*a return p def transformer(x): ch=str(x) y=1 for i in range(len(ch)): if i % 2 ==0 : a=int(ch[i]) else: y=y*puissance(a,int(ch[i])) if len(ch)%2 != 0 : y=y*a return y def chercher(n,m): print('La transformation de '+str(n)+' et les '+str(m)+' entiers suivants sont:') print(str(transformer(n)),end=" - ") for i in range(m): print(str(transformer(n+i+1)),end=" - ") #programme principal n=saisie_entier('n',200,999999) m=saisie_entier('m',3,10) chercher(n,m) |
Exécution du programme:
Pour créer une application en Python et Designer QT qui calcule et affiche la transformation Powertrain de l’entier N ainsi que celles des M entiers consécutifs, on va suivre ces étapes:
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 trasformations Powertrain
QPushButton
nommé 'affiche_bt' pour rechercher les trasformations Powertrain
Enregistrez le fichier avec l'extension .ui
, par exemple autonombre-interface.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 |
from PyQt5.uic import loadUi from PyQt5.QtWidgets import QApplication app = QApplication([]) windows = loadUi ("transformation_powertrain-interface.ui") def puissance(a,b): p=1 for k in range(1,b+1): p=p*a return p def transformer(x): ch=str(x) y=1 for i in range(len(ch)): if i % 2 ==0 : a=int(ch[i]) else: y=y*puissance(a,int(ch[i])) if len(ch) %2 != 0 : y=y*a return y def play(): windows.msg.clear() m = int(windows.m.text()) n = int(windows.n.text()) if 200<=n<=999999 and 3<=m<=10 : resultat='La transformation de '+str(n)+' et les '+str(m)+' entiers suivants sont:\n' resultat=resultat+str(transformer(n))+' - ' for i in range(m): resultat=resultat+str(transformer(n+i+1))+" - " windows.msg.setText(resultat) else: windows.msg.setText("Veuiller respecter 200<=n<=999999 and 3<=m<=10") windows.transformer_bt.clicked.connect(play) windows.show() app.exec_() |
Exécution du programme
Vous pouvez voir aussi :
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