Bac scientifique théorique 2010 [ Algorithme + Python ]

Algo et Python 01-08-24
54 0

 

Travail demandé

On se propose d’écrire un programme Python « Tri » qui permet de remplir un tableau T par n entiers distincts puis de former et d’afficher un autre Res qui va contenir les n entiers du tableau T classés en ordre croissant selon le principe suivant :

Pour chaque élément du tableau T :

1) Déterminer le nombre Nbr d’éléments de T qui lui sont inférieurs ou égaux.

2) Placer cet élément dans la position Nbr du tableau Res.

Exemple : T

3 14 0 9 17 5 8 4

L’entier T[1]=3 a 2 éléments qui lui sont inférieurs ou égaux (3 et 0), il sera placé dans la position 2 du tableau Res:

3

L’entier T[2]=14 a 7 éléments qui lui sont inférieurs ou égaux (3,14,0,9,5,8 et 4), il sera placé dans la position 7 du tableau Res:

3 14

Ainsi de suite pour les autres éléments.

Le tableau Res aura les éléments placés dans un ordre croissant comme suit :

0 3 4 5 8 9 14 17

Solution Algorithmique

Cet algorithme vise à trier un tableau T contenant n entiers distincts en ordre croissant et à placer les éléments triés dans un autre tableau Res. Voici le principe de l'algorithme :

1- Initialisation :

On a un tableau T de taille n.

On crée un tableau Res de la même taille n pour stocker les résultats triés.

2- Remplissage du tableau T par n entiers distincts :

a- Saisir le premier élément du tableau (lire t[0])

a- Initialiser un index i à 1, qui suivra le nombre d'éléments actuellement dans T.

b- Saisir un entier (lire t[i]).

c- Vérifier si cet entier n'est pas déjà présent dans T. Pour ce faire, parcourir le tableau T jusqu'à l'index i-1 et comparer chaque élément à t[i].

d- Si t[i] est trouvé dans T, on retourne à la phase (b)

Sinon on incrémente l'indice i et on retourne à la phase (b) .

3- Remplissage du tableau Res:

Pour chaque élément T[i] du tableau T :

a- On initialise un compteur position à 0.

b- On parcourt le tableau T et pour chaque élément T[j], si T[j]≤T[i], on incrémente le compteur position.

c- On place l'élément T[i] à l'index position dans le tableau Res.

4- Affichage du tableau Res:

Après avoir parcouru tous les éléments de T, le tableau Res contiendra les éléments de T triés en ordre croissant.

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

Déclaration des objets

Objet

Type / Nature

i

entier

t

tableau de 30 entiers

res

tableau de 30 entiers

La fonction saisie

Cette fonction retourne un entier n entre 1 et 30 saisi par l'utilisateur.

Déclaration des objets

Objet

Type / Nature

n

entier

La fonction verif_distinct

Cette fonction vérifie si un entier saisi par l'utilisateur se trouve dans le tableau.

Déclaration des objets

Objet

Type / Nature

i

entier

j

entier

La procédure remplir

Cette procédure remplit le tableau t de n entiers distincts.

Déclaration des objets

Objet

Type / Nature

i

entier

La procédure Tri

Cette procédure va parcourir le tableau T en remplissant le tableau Res par des entiers d'une façon croissante.

Déclaration des objets

Objet

Type / Nature

i

entier

j

entier

position

entier

La procédure afficher_tableau

Cette procédure va parcourir un tableau  en affichant ses éléments.

Déclaration des objets

Objet

Type / Nature

i

entier

Solution en Python

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 il faut:

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 trier un tableau T contenant n entiers distincts en ordre croissant et à placer les éléments triés dans un autre tableau Res , vous pouvez suivre les étapes suivantes :

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

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 .

QPushButton nommé 'remplir_bt' pour exécuter le module createTab afin de remplir le tableau t à partir de la chaine 'ch'.

QPushButton nommé 'trier_bt' pour exécuter le module TrierTab afin de remplir le tableau Res par des entiers du tableau T d'une façon croissante.

QLabel nommé 'msg' pour afficher un message d'erreur si ch est vide ou contient des valeurs non numériques .

QLabel nommé 'tab_label' pour afficher les éléments du tableau T.

QLabel nommé 'res_abel' pour afficher les éléments du tableau Res.

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.

Exécution du programme

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

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.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali-Prof Info