0% ont trouvé ce document utile (0 vote)
87 vues5 pages

Entiers Manquants - Bac Pratique 2007 (Algorithme + Python)

Transféré par

Fathi Sahbani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
87 vues5 pages

Entiers Manquants - Bac Pratique 2007 (Algorithme + Python)

Transféré par

Fathi Sahbani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Travail demandé

Ecrire un programme en Python permettant de saisir, dans un tableau T, N entiers > 0 triés dans
l’ordre croissant (2≤n≤20), puis d’afficher les entiers manquants entre le premier et le dernier élément
de ce tableau T ainsi que leur nombre.

Exemple : si n=7 et si T est le tableau suivant :

5 6 8 9 10 12 15
Le programme affichera : les entiers manquants sont : 7 11 13 14 ; leur nombre est : 4

Solution Algorithmique
1- Saisie du tableau : Le programme commencera par saisir un tableau de N entiers >0 triés dans
l’ordre croissant. On s'assurera que 2≤N≤20.
2- Détection des entiers manquants : Ensuite, pour chaque entier compris entre le premier et le
dernier élément du tableau, on véri e s'il est présent dans le tableau. Si ce n'est pas le cas, il sera
considéré comme "manquant".

3- Af chage des résultats : En n, on af che les entiers manquants et leur nombre total.

Dans cet algorithme, On va utiliser 2 fonctions et 3 procédures :

1 Algorithme entiers_manquants_tableau
2 Debut
3 n<-saisie_taille()
4 Ecrire('remplissage du tableau t')
5 remplir(t,n)
6 afficher_manque(t,n)
7 Fin

Déclaration des objets

Objet Type / Nature


n entier
t tableau des 30 entiers
La fonction saisie_taille

Cette fonction retourne un entier n entre 2 et 20 saisi par l'utilisateur.


1 foncttion saisie_taille():entier
2 Début
3 Ecrire('donner un entier entre 2 et 20')
4 lire (n)
5 Tant que n<2 ou n>20 faire
6 Ecrire('donner un entier entre 2 et 20')
7 lire (n)
8 Fin tant que
9 retourner n
10 Fin

Déclaration des objets

Objet Type / Nature


n entier

La procédure remplir

Cette procédure remplit le tableau t de n entiers dans l'ordre croissant.


1 Procédure remplir(@t:Tab,n:entier)
2 Début
3 Ecrire("donner elt N°",0,":")
4 lire(t[0])
5 Pour i de 1 à n-1 faire
6 Ecrire("donner elt N° "+i+" tq >"+t[i-1]+': ')
7 lire(t[i])
8 Tant que t[i]<=t[i-1] faire
9 Ecrire(""donner elt N° "+i+" tq >"+t[i-1]+': ')
10 lire(t[i])
11 Fin tant que
12 Fin pour
13 Fin

Déclaration des objets

Objet Type / Nature


i entier

La procédure af cher_manque

Cette procédure véri e pour chaque entier compris entre le premier et le dernier élément du tableau
s'il est présent dans le tableau. Si ce n'est pas le cas, il af che cet entier.
1 Procédure afficher_manque(t:Tab,n:entier)
2 Début
3 s<-0
4 cp<-t[0]
5 i<-1
6 Ecrire('les entiers manquants sont');
7 Tant que (i<n) faire
8 cp<-cp+1
9 Si (cp<t[i]) alors
10 Ecrire(cp)
11 s<-s+1
12 Sinon
13 i=i+1
14 Fin si
15 Ecrire ('leur nombre est '+s);
16 Fin

Déclaration des objets

Objet Type / Nature


i entier
cp entier
s entier
Solution en Python
1 from numpy import array
2 t=array([int()]*30) #declaration du tableau des entiers
3
4
5 def saisie_taille() :
6 n=int(input("donner un entier entre 2 et 20: "))
7 while(n<2) or (n>20) :
8 n=int(input("donner un entier entre 2 et 20: "))
9 return n
10
11 def remplir(t,n):
12 t[0]=int(input("donner elt N°0 >0: "))
13 for i in range (1,n) :
14 t[i]=int(input("donner elt N° "+str(i)+" tq >"+str(t[i-1])+': '))
15 while (t[i]<=t[i-1]):
16 t[i]=int(input("donner elt N° "+str(i)+" tq >"+str(t[i-1])+': '))
17
18 def afficher_manque(t,n):
19 s=0
20 cp=t[0]
21 i=1
22 print('les entiers manquants sont');
23 while (i<n):
24 cp=cp+1
25 if (cp<t[i]):
26 print(str(cp))
27 s=s+1
28 else:
29 i=i+1
30 print ('leur nombre est '+str(s));
31
32
33 #programme principal
34 n=saisie_taille()
35 print('remplissage du tableau t')
36 remplir(t,n)
37 afficher_manque(t,n)

Exécution du programme

Solution en Python et Designer QT


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 et Designer QT qui permet de saisir, dans un tableau T, N entiers

> O triés dans l'ordre croissant (2<= n <= 20), puis d'afficher les entiers manquants entre le premier et le dernier élément de ce
tableau T ainsi que leur nombre on va suivre ces étapes :

1- Créer l'interface graphique avec Qt Designer


a- Ouvrez Qt Designer et créez un nouveau chier de type Main Window.

b- Ajoutez ces widgets:

QLineEdit nommé 'ch' pour entrer des entiers .

QPushButtonnommé 'remplir_bt' pour exécuter le module createTab a n de remplir le tableau à partir


de la chaine 'ch'.

QPushButton nommé 'bt_recherche' pour af cher les entiers manquants.


nommé 'msg' pour afficher un message d'erreur si ch est vide ou contient des valeurs non
QLabel
numériques ou les éléments du tableau ne sont pas positifs.
QLabel nommé 'tab_label' pour af cher les éléments du tableau T.
QLabel nommé 'resultat' pour contenir les entiers manquants.

Enregistrez le fichier avec l'extension .ui, par exemple tabtab-2.ui.

2- Créer le script Python pour l'application


Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.

1 from PyQt5.uic import loadUi


2 from PyQt5 import QtCore, QtGui
3 from PyQt5.QtWidgets import *
4 from PyQt5 import QtCore, QtGui, QtWidgets
5
6 from numpy import array
7
8 t=array([str]*100)
9
10 app = QApplication([])
11 windows = loadUi ("tabtab-2.ui")
12
13 # Fonction qui supprime des espaces de la chaine des carcatères
14 def supprimer_espaces (ch) :
15 while(ch[0]==' '): # elimnier tous les espaces au début de la chaine
16 ch=ch[1:len(ch)]
17
18 while(ch[len(ch)-1]==' '): # elimnier tous les espaces a la fin de la chaine
19 ch=ch[0:len(ch)-1]
20
21 while (ch.find(' ')>0):
22 ch=ch.replace(" ", " ") # remplacer les doubles espaces apar un seul espace
23
24 return ch
25
26
27 # Procedure qui remplit un tableau par des entiers a partir d'une chaine des caractère
28 def createTab():
29 ch = windows.ch.text()
30 global n # pour la taille di tableau
31 if ch=="":
32 windows.msg.setText("Veuillez remplir la chaîne")
33 else:
34 windows.msg.clear() # effacer le message d erreur
35 ch= supprimer_espaces(ch)
36 i=0
37 j=0
38 ch1=''
39 test_croissance=True
40 # parcourir les caracteres de la chaine
41 while((i<len(ch)) and (test_croissance) and (('0'<=ch[i]<='9') or (ch[i]==' '))):
42 if ('0'<=ch[i]<='9'):
43 ch1=ch1+ch[i]
44 if ((ch[i]==' ') or (i==len(ch)-1)) :
45 t[j]=int(ch1)
46 ch1=''
47 if j>0 and t[j]<=t[j-1]:
48 test_croissance=False
49 j=j+1
50
51 i=i+1
52 if (i<len(ch)) or (test_croissance==False) :
53 windows.msg.setText("La chaine doit contenir des entiers>0 et trie d'une facon croissante")
54 else :
55 if 2<=j<=20: # test du taille du tableau
56 n=j
57 tab=''
58 for k in range (j) :
59 tab=tab+ 't['+str(k)+']= '+ str(t[k])+ '\n'
60
61 #afficher les elements du tableau
62 windows.tab_label.setText(tab)
63 else:
64 windows.msg.setText("Le nbr des elements doit etre entre 2 et 20")
65
66 def afficher_manque():
67 s=0
68 cp=t[0]
69 i=1
70 liste='les entiers manquants sont:\n'
71 while (i<n):
72 cp=cp+1
73 if (cp<t[i]):
74 liste=liste+str(cp)+' '
75 s=s+1
76 if s % 10==0 :
77 liste=liste+'\n'
78 else:
79 i=i+1
80
81 liste=liste+'\n'+ 'leur nombre est '+str(s)
82 windows.resultat.setText(liste)
83
84
85 windows.remplir_bt.clicked.connect ( createTab )
86 windows.bt_recherche.clicked.connect ( afficher_manque )
87
88 windows.show()
89 app.exec_()

Vous aimerez peut-être aussi