On se propose de concevoir une interface graphique permettant de saisir deux chaînes de caractères ch1 et ch2 puis de former la chaîne res par les caractères qui apparaissent dans les deux chaînes à la fois.
N.B. Si un caractère apparait plusieurs fois dans les deux chaînes, on le mettra une seule fois dans la chaîne res.
Les chaînes ch1 et ch2 doivent être non vides, de longueurs inferieures à 30 chacune et contiennent seulement des lettres alphabétiques en minuscule
Exemple : Pour ch1 = "informatique" et ch2 = "multimedia", on obtient res = "imatue"
Dans cet algorithme, On va utiliser trois fonctions :
Algorithme du programme Principal
1 2 3 4 5 6 7 8 |
Algorithme intersection_chaines Debut Ecrire('saisir la chaine ch1') ch1<-saisie_chaine() Ecrire('saisir la chaine ch2') ch2<-saisie_chaine() Ecrire ('la chaine intersection de ch1 et ch2 est '+intersection(ch1,ch2)) Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch1 | chaîne des caractères |
ch2 | chaîne des caractères |
La fonction verif_lettres
Cette fonction vérifie que la chaîne ch est de longueur inferieures à 30 chacune et contient seulement des lettres alphabétiques en minuscule.
1 2 3 4 5 6 7 8 9 10 11 12 |
fonction verif_lettres(ch:chaine):booleen Début Si 1<=long(ch)<=30 alors i<-0 Tant que (i<long(ch)-1) et ('a'<=ch[i]<='z') faire i<-i+1 Fin tant que retourner ('a'<=ch[i]<='z') Sinon retourner Faux Fin si Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
La fonction saisie_chaine
Cette fonction saisit une chaine de longueur inferieures à 30 chacune et contient seulement des lettres alphabétiques en minuscule.
1 2 3 4 5 6 7 8 9 10 |
fonction saisie_chaine():chaine Début Ecrire("donner une chaine formee au maximum 30 lettres minuscules: ") Lire(ch) Tant que (verif_lettres(ch)=Faux) faire Ecrire("donner une chaine formee au maximum 30 lettres minuscules: ") Lire(ch) Fin tant que retourner ch Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch | chaîne des caractères |
La fonction intersection
Cette fonction retourne une chaîne contenant les caractères communes des deux chaînes ch1 et ch2.
1 2 3 4 5 6 7 8 9 10 11 12 |
fonction intersection(ch1:chaine;ch2:chaine):chaine Début ch_intersection<-'' Pour i de 0 à long(ch1)-1 faire # verifier que le carcatere de ch1 se trouve dans ch2 # et ne se trouve pas dans ch_intersection pour eviter la repetition du carcatere Si (Pos(ch2,ch1[i])>=0) et (Pos(ch_intersection,ch1[i]) < 0)) alors ch_intersection<-ch_intersection+ch1[i] Fin Fin pour retourner ch_intersection Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch_intersection | chaîne des caractères |
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 |
def verif_lettres(ch) : if 1<=len(ch)<=30 : i=0 while (i<len(ch)-1) and ('a'<=ch[i]<='z'): i=i+1 return ('a'<=ch[i]<='z') else: return False def saisie_chaine(): ch=input("donner une chaine formee au maximum 30 lettres minuscules: ") while (verif_lettres(ch)==False) : ch=input("donner une chaine formee au maximum 30 lettres minuscules: ") return ch def intersection(ch1,ch2): ch_intersection='' for i in range(len(ch1)): if (ch2.find(ch1[i]))>=0 and (ch_intersection.find(ch1[i]) < 0) : ch_intersection=ch_intersection+ch1[i] return ch_intersection # programme principal print('saisir la chaine ch1') ch1=saisie_chaine() print('saisir la chaine ch2') ch2=saisie_chaine() print ('la chaine intersection de ch1 et ch2 est '+intersection(ch1,ch2)) |
Exécution du programme:
Pour créer une application en Python et Designer QT qui recherche et affiche les caractères communs des deux chaînes des caractères ch1 et ch2, 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é 'ch1' pour entrer une chaîne des caractères ch1.
QLineEdit
nommé 'ch2' pour entrer une chaîne des caractères ch2.
QPushButton
nommé 'former_bt' pour rechercher et afficher les caractères communs des deux chaînes des caractères ch1 et ch2.
QLabel
nommé 'msg' pour contenir les messages d'erreur et les caractères communs des deux chaînes des caractères ch1 et ch2.
Enregistrez le fichier avec l'extension .ui
, par exemple intersection_chaine-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 |
from PyQt5.uic import loadUi from PyQt5.QtWidgets import QApplication app = QApplication([]) windows = loadUi ("intersection_chaine-interface.ui") def verif_lettres(ch) : if 1<=len(ch)<=30 : i=0 while (i<len(ch)-1) and ('a'<=ch[i]<='z') : i=i+1 return ('a'<=ch[i]<='z') else: return False def recherche(): windows.msg.clear() ch1 = windows.ch1.text() ch2 = windows.ch2.text() if (verif_lettres(ch1)) and (verif_lettres(ch2)) : ch_intersection='' for i in range(len(ch1)): if (ch2.find(ch1[i]))>=0 and (ch_intersection.find(ch1[i]) < 0) : ch_intersection=ch_intersection+ch1[i] windows.msg.setText('la chaine intersection de ch1 et ch2 est '+ch_intersection) else: windows.msg.setText("donner une chaine formee au maximum 30 lettres minuscules") windows.former_bt.clicked.connect(recherche) 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