Soit T un tableau de N chaînes de caractères non vides et dont la taille maximale est 5 caractères.
On se propose d’écrire un programme permettant de remplir le tableau T par N chaînes (2<=N<=30), puis de calculer et d’afficher la somme des nombres extraits des chaînes de chaque élément du tableau T. Le nombre extrait de la chaîne contenue dans la case i de T, est formé par la concaténation de tous les chiffres de la chaîne parcourue de gauche à droite. N.B : Si une chaîne ne contient pas de chiffres, elle prend la valeur 0 dans le calcul de la somme finale. Exemple : Si N=9 et que le tableau T contient les éléments suivants :
R4*s2 | 12hj5 | 5?7e | Ak !r | E9Y41 | 6754 | 3E-Z2 | G(Y | U5Kx1 |
Alors la somme S=42+125+57+0+941+6754+32+0+51=8002
1. Remplissage du tableau T
a) On commence par demander à l'utilisateur de saisir le nombre N
d'éléments du tableau.
b) On vérifie que N
est bien compris entre 2 et 30.
c) Ensuite, on remplit le tableau T
en demandant à l'utilisateur de saisir N
chaînes de caractères. Chaque chaîne doit être non vide et avoir au maximum 5 caractères.
2. Extraction des nombres des chaînes de caractères
a) Pour chaque chaîne dans le tableau T
, on parcourt les caractères de la chaîne un par un.
b) On vérifie si un caractère est un chiffre (0-9).
c) Si c'est un chiffre, on le concatène à une nouvelle chaîne ou on le garde dans une variable dédiée à la construction du nombre extrait.
3. Conversion en entier et calcul de la somme
a) Une fois tous les chiffres extraits d'une chaîne, on convertit cette chaîne en un entier.
b) On cumule la somme des nombres extraits de toutes les chaînes du tableau.
4. Affichage de la somme
Finalement, on affiche la somme totale des nombres extraits des chaînes.
Dans cet algorithme, On va utiliser 2 fonctions et une procédure :
Algorithme du programme principal
1 2 3 4 5 6 7 |
Algorithme eliminer_tableau Debut n<-saisie() Ecrire('remplissage du tableau t') remplir(t,n) Ecrire('la somme S= ',somme_chiffres(t,n)) Fin |
Déclaration des objets
Objet | Type / Nature |
n | entier |
t | tableau de 30 entiers |
La fonction saisie
Cette fonction retourne un entier n entre 4 et 10 saisi par l'utilisateur.
1 2 3 4 5 6 7 8 9 10 |
foncttion saisie() Début Ecrire('donner un entier entre 2 et 30') lire (n) Tant que n<2 ou n>30 faire Ecrire('donner un entier entre 2 et 30') lire (n) Fin tant que retourner n Fin |
Déclaration des objets
Objet | Type / Nature |
n | entier |
La procédure remplir
Cette procédure remplit le tableau t de n entiers.
1 2 3 4 5 6 7 8 9 10 11 |
Procédure remplir(@t:Tab,n:entier) Début Pour i de 0 à n-1 faire Ecrire("donner une chaine dont sa longueur<=5 pour elt N°",i,": ") lire(t[i]) Tant que ('0'==long(t[i])) ou (long(t[i])>5) faire Ecrire("donner une chaine dont sa longueur<=5 pour elt N°",i,": ") lire(t[i]) Fin tant que Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
La fonction somme_chiffres
Cette fonction calcule et affiche la somme des nombres extraits des chaînes de chaque élément du tableau T.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Fonction somme_chiffres(t:tab,n:entier) Début somme<-0 Pour i de 0 à n-1 faire ch<-'' Pour j de 0 à long(t[i]) faire Si '0'<= t[i][j] <='9' alors ch<-ch+t[i][j] Fin si Si ch='' alors chiffre<-0 Sinon chiffre<-Valeur(ch) Fin si somme<-somme+chiffre Fin pour retourner somme Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
La fonction saisie_mot
Cette fonction saisit un mot de longueur entre 1 et 7 et composé uniquement des lettres minuscules.
1 2 3 4 5 6 7 8 |
Fonction saisie_mot() Début lire(ch) Ecrire("donner un mot non vide formé par des lettres minuscules et sa longeur <=7: ") Tant que (verif_mot(ch)=Faux) faire ch=input("donner un mot non vide formé par des lettres minuscules et sa longeur <=7: ") retourner ch Finin |
La procédure recherche
Cette procédure recherche si les caractères d'un mot se trouvent tous dans le tableau des caractères.
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 |
Procédure recherche(t:Tab,n:entier,mot:chaîne) Début indice<-'' i<--1 j<-0 exist<-Vrai Tant que (exist) et (i<long(mot)-1) faire i<-i+1 exist<-Faux j<-0 Tant que ((mot[i]!=t[j]) et (j<n-1)) faire j<-j+1 Fin tant que Fin tant que Si (mot[i]=t[j]) alors exist<-Vrai ch<-Conch(j)+' ' indice<-indice+ch Fin si Si (mot[i]=t[j]) alors Ecrire('les indices des lettres du mot= ',indice) Sinon Ecrire('On ne peut pas former la chaîne à partir des caractères du tableau ') Fin si Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
j | entier |
ch | chaîne des caractère |
chiffre | entier |
somme | 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 |
from numpy import array t=array([str]*30) def saisie_taille() : n=int(input("donner un entier entre 2 et 30 ")) while(2>n) or (n>30) : n=int(input("donner un entier entre 2 et 30 ")) return n def remplir(t,n): for i in range (n) : t[i]=input("donner une chaine dont sa longueur<=5 pour elt N°"+str(i)+": ") while ('0'==len(t[i])) or (len(t[i])>5) : t[i]=input("donner une chaine dont sa longueur<=5 pour elt N°"+str(i)+": ") def somme_chiffres(t,n): somme=0 for i in range(n) : ch='' for j in range(len(t[i])): if '0'<= t[i][j] <='9' : ch=ch+t[i][j] if ch=='': chiffre=0 else: chiffre=int(ch) somme=somme+chiffre return somme # programme principal n=saisie_taille() print('remplissage du tableau t') remplir(t,n) print('la somme S= '+str(somme_chiffres(t,n))) |
Exécution du programme
Pour remplir un tableau des caractères à partir d'une chaîne de caractères en Python, vous pouvez suivre les étapes suivantes :
1- Découper la chaîne de caractères en des caractères.
2- Ajouter chaque caractère au tableau.
Pour créer une application en Python pour calculer et afficher la somme des nombres extraits des chaînes de chaque élément du tableau T.
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'ch' pour entrer des caractères pour le tableau t.
QLineEdit
nommé 'mot' pour entrer une chaîne à rechercher dans le tableau .
QPushButton
nommé 'remplir_bt' pour exécuter le module createTab afin de remplir le tableau à partir de la chaine 'ch'.
QPushButton
nommé 'recherche_bt' pour exécuter le module chercher_mot.
QLabel
nommé 'msg' pour afficher un message d'erreur si ch est vide ou ne contient pas des lettres minuscules.
QLabel
nommé 'resultat_recherche' pour afficher le résultat de la recherche du mot dans le tableau des caractères.
QLabel
nommé 'tablabel' pour afficher les éléments du tableau.
Enregistrez le fichier avec l'extension .ui
, par exemple tabtab-2.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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
from PyQt5.uic import loadUi from PyQt5 import QtCore, QtGui from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets from numpy import array t=array([str]*30) app = QApplication([]) windows = loadUi ("tabtab-2.ui") # Fonction qui supprime des espaces de la chaine des carcatères def supprimer_espaces (ch) : while(ch[0]==' '): # elimnier tous les espaces au début de la chaine ch=ch[1:len(ch)] while(ch[len(ch)-1]==' '): # elimnier tous les espaces a la fin de la chaine ch=ch[0:len(ch)-1] while (ch.find(' ')>0): ch=ch.replace(" ", " ") # remplacer les doubles espaces apar un seul espace return ch # Procedure qui remplit un tableau par des entiers a partir d'une chaine des caractère def createTab(): windows.tab_label.clear() ch = windows.ch.text() global n # pour la taille du tableau if ch=="": windows.msg.setText("Veuillez remplir la chaîne") else: windows.msg.clear() # effacer le message d erreur ch= supprimer_espaces(ch) i=-1 j=-1 ch1='' # parcourir les caracteres de la chaine while (i<len(ch)-1): i=i+1 if (ch[i]==' ') : j=j+1 t[j]=ch1 ch1='' elif (i==len(ch)-1): ch1=ch1+ch[i] j=j+1 t[j]=ch1 else: ch1=ch1+ch[i] if 2<=j<=30 : i=0 while (i<j) and (1<=len(t[i])<=5): print(t[i]) i=i+1 if (1<=len(t[i])<=5): n=j+1 tab='' for k in range (j+1) : tab=tab+ 't['+str(k)+']= '+ str(t[k])+ '\n' #afficher les elements du tableau windows.tab_label.setText(tab) else : print(str(len(t[i]))) windows.msg.setText("la taille de la chaîne n'est pas entre 1 et 5") else : windows.msg.setText("la taille du tableau n'est pas entre 2 et 30") def somme_chiffres(): somme=0 for i in range(n) : ch='' for j in range(len(t[i])): if '0'<= t[i][j] <='9' : ch=ch+t[i][j] if ch=='': chiffre=0 else: chiffre=int(ch) somme=somme+chiffre windows.somme_chiffres.setText('la somme S= '+str(somme)) windows.remplir_bt.clicked.connect ( createTab ) windows.somme_bt.clicked.connect ( somme_chiffres ) 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