Ecrire un programme Python qui permet :
1- de remplir un tableau T par n entiers saisis dans un ordre croissant (4<=n<=10) 2- de saisir un entier E et de l’insérer dans le tableau T à la bonne place de sorte que les entiers restent triés dans ce tableau 3- d’afficher les éléments du tableau T après insertion de E. Exemple : pour n=7 et pour le tableau T suivant :
6 | 8 | 12 | 14 | 28 | 37 | 43 |
Si on saisit E=21, il sera à la position 5 dans le tableau qui devient :
6 | 8 | 12 | 14 | 21 | 28 | 37 | 43 |
1) Remplissage du tableau:
2) Insertion la valeur de x dans le tableau:
Voici le principe de l'algorithme qui permet de réaliser les trois étapes demandées :
1. Remplir un tableau T
par n
entiers saisis dans un ordre croissant :
Initialisation : Créer un tableau T
de taille n
.
Saisie des éléments :
a) Saisir le premier élément du tableau t[0].
b) Pour chaque élément i
de 1
à n-1
: comparer t[i] à T[i-1]
:
- Si t[i]
est supérieur ou égal à T[i-1]
, l'affecter à T[i]
.
- Sinon, redemander la saisie de l'entier jusqu'à ce que l'ordre croissant soit respecté.
2. Saisir un entier x
et l’insérer dans le tableau T
à la bonne place :
a) Saisie de x : Saisir un entier x
.
b) Insertion de E
:
Parcourir le tableau T
de 0
à n-1
.
Trouver l'indice i
où E
doit être inséré (c'est-à-dire où E
est inférieur à l'élément suivant dans le tableau).
Déplacer les éléments à partir de l'indice i
vers la droite pour libérer une place pour E
.
Insérer E
à la position i
.
3. Afficher les éléments du tableau T
après l'insertion de E
:
Parcourir le tableau T
et afficher chaque élément dans l'ordre.
Dans cet algorithme, On va utiliser une fonction et 3 procédures :
Algorithme du programme principal
1 2 3 4 5 6 7 8 9 10 11 12 |
Algorithme eliminer_tableau Debut n<-saisie() Ecrire('remplissage du tableau t') remplir(t,n) ranger(t,n) Ecrire("donner un nombre à insérer dans le tableau: ") lire(x) insertion_tableau(t,n,x) Ecrire('tableau t après insertion') afficher_tableau(t,n+1) 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 4 et 10') lire (n) Tant que n<4 ou n>10 faire Ecrire('donner un entier entre 4 et 10') 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 Ecrire("donner elt N°0: ") lire(t[0]) Pour i de 0 à n-1 faire Tant que(t[i]<t[i-1]) faire Ecrire('donner elt N°',i,>',t[i-1],':') lire(t[i]) Fin tant que Fin pour Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
La procédure insertion_tableau
Cette procédure insère la valeur de x dans le tableau en conservant l'ordre croissant de ses éléments.
1 2 3 4 5 6 7 8 9 |
Procédure afficher_tableau(@t:Tab,n:entier,x:entier) Début i<-n # Augmenter la taille du tableau Tant que(t[i-1]>x) et (i>0) Faire t[i]<-t[i-1] # faire la translation des éléments du tableau à droite i<-i-1 Fin tant que t[i]<-x Fin |
Déclaration des objets
Objet | Type / Nature |
i | entier |
La procédure afficher_tableau
Cette procédure affiche les éléments du tableau.
1 2 3 4 5 6 7 |
Procédure afficher_tableau(t:Tab,n:entier) Début Pour i de 0 à n-1 faire Ecrire('t[',i,']=') Ecrire(t[i]) 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 |
from numpy import array t=array([int()]*30) def saisie_taille() : n=int(input("donner un entier entre 4 et 10 ")) while(4>n) or (n>10) : n=int(input("donner un entier entre 4 et 10 ")) return n def remplir(t,n): t[0]=int(input("donner elt N°0: ")) for i in range (1,n) : t[i]=int(input("donner elt N°"+str(i)+">"+str(t[i-1])+": ")) while(t[i]<t[i-1]) : t[i]=int(input("donner elt N°"+str(i)+">"+str(t[i-1])+": ")) def insertion_tableau(t,n,x): i=n # Augmenter la taille du tableau while(t[i-1]>x)and (i>0): t[i]=t[i-1] # faire la translation des éléments du tableau à droite i=i-1 t[i]=x def afficher_tableau(t,n): for i in range (n) : print('t['+str(i)+']= '+ str(t[i])) n=saisie_taille() print('remplissage du tableau t') remplir(t,n) x=int(input("donner un nombre à insérer dans le tableau: ")) insertion_tableau(t,n,x) print('tableau t après insertion') afficher_tableau(t,n+1) |
Exécution du programme
Pour remplir un tableau d'entiers à 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 sous-chaînes contenant les entiers.
2- Convertir chaque sous-chaîne en entier.
3- Ajouter chaque entier au tableau.
Pour créer une application en Python pour insèrer la valeur de x dans le tableau en conservant l'ordre croissant de ses éléments.
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'ch' pour entrer des entiers .
QLineEdit
nommé 'x' pour entrer la valeur à insérer 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é 'inserer_bt' pour exécuter le module insertion_elt afin d'insérer la valeur x dans le tableau en gardant l'ordre croissant de ses éléments.
QLabel
nommé 'msg' pour afficher un message d'erreur si ch est vide ou contient des valeurs non numériques ou les éléments du tableau ne sont pas dans l'ordre croissant.
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([int()]*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 def verif_croissance(t,n): i=0 while t[i]<=t[i+1] and i<n-2 : i=i+1 return t[i]<=t[i+1] def insertion_elt(t,n,x): i=n # Augmenter la taille du tableau while(t[i-1]>x)and (i>0): t[i]=t[i-1] # faire la translation des éléments du tableau à droite i=i-1 t[i]=x # 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=0 j=0 ch1='' # parcourir les caracteres de la chaine while((i<len(ch)) and (('0'<=ch[i]<='9') or (ch[i]==' ') or (ch[i]=='-'))): if ('0'<=ch[i]<='9') or (ch[i]=='-') : ch1=ch1+ch[i] if ((ch[i]==' ') or (i==len(ch)-1)) : t[j]=int(ch1) ch1='' j=j+1 i=i+1 if (i<len(ch)) : # si la chaine contient des valeurs non numeriques windows.msg.setText("la chaîne contient des valeurs non numériques") else : if (4<=j<=10) : if verif_croissance(t,j): n=j tab='' for k in range (j) : tab=tab+ 't['+str(k)+']= '+ str(t[k])+ '\n' #afficher les elements du tableau windows.tab_label.setText(tab) else: windows.msg.setText("les éléments du tableau sont saisis dans un ordre non croissant") else: windows.msg.setText("la taille du tableau n'est pas entre 4 et 10") def insertion_tableau() : # insérer un élément dans le tableau x = int(windows.x.text()) insertion_elt(t,n,x) tab='' for k in range (n+1) : tab=tab+ 't['+str(k)+']= '+ str(t[k])+ '\n' #afficher les elements du tableau windows.tab_label.setText(tab) windows.remplir_bt.clicked.connect ( createTab ) windows.inserer_bt.clicked.connect ( insertion_tableau ) windows.show() app.exec_() |
Exécution du programme
1) Remplissage du tableau:
2) Insertion la valeur de x dans le tableau:
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