Bac scientifique Théorique 2012 [ Algorithme + Python ]

Algo et Python 28-07-24
160 0

Travail demandé

On se propose d’écrire un programme qui saisit un entier naturel n (2 <= n<=20), puis remplit un tableau T1 par N nombres complexes de la forme a+bi avec a et b deux entiers naturels non nuls. Chaque suite d’éléments du tableau T1 qui ont le même module sera affiché sur une ligne à part. On rappelle que le module d’un nombre complexe de la forme a+bi est racine carré (a²+b²)

Pour réaliser le traitement demandé on suivra les étapes suivantes :

1- Remplir un tableau T2 par les modules des éléments de T1 de façon à ce que T2[i] soit le module du nombre complexe T[i].

2- Trier simultanément les deux tableaux T1 et T2 selon l’ordre décroissant des valeurs du tableau T2

3- Afficher chaque suite d’éléments du tableau T qui ont le même module sur une ligne à part.

Exemple :  Pour n=6 et pour le tableau T2 suivant :

2+3i 2+15i 2+17i 23+3i 17+2i 15+2i

Le remplissage de T2 donne le tableau suivant :

3.60 15.13 17.12 23.19 17.12 15.13

Après le tri on obtient les deux tableaux suivants :

T1                                                                                                                         T :

23+3i 2+17i 17+2i 2+15i 15+2i 2+3i

T2 :

23.19 17.12 17.12 15.13 15.13 3.60

Le programme affiche les lignes suivantes :

23+3i

2+17i    17+2i

2+15i     15+2i

2+3i

Solution Algorithmique

Pour résoudre ce problème, nous allons suivre les étapes mentionnées. Le programme commencera par saisir un nombre n (2 ≤ n ≤ 20), puis remplira un tableau T1 avec des nombres complexes sous la forme a+bi. Ensuite, il calculera les modules de ces nombres complexes et les stockera dans un tableau T2. Enfin, il triera simultanément les tableaux T1 et T2 selon l'ordre décroissant des modules et affichera les nombres complexes ayant le même module sur des lignes séparées.

Détails des étapes :

1- Saisie et initialisation : On demande à l'utilisateur de saisir n et les parties réelles et imaginaires des nombres complexes.

2- Calcul des modules : Pour chaque nombre complexe a+bi, on calcule le module en utilisant la formule racine carré (a²+b²) et on stocke ce module dans T2.

3- Tri simultané des tableaux : Les deux tableaux T1 et T2 sont triés selon les valeurs décroissantes de T2 en utilisant l'algorithme tri à bulles.

4- Affichage : On parcourt les tableaux triés et on affiche les nombres complexes du tableau T1 en les regroupant par modules similaires.

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

 

Algorithme du programme principal

Déclaration des objets

Objet

Type / nature

n

entier

t1

tableau des chaînes de caratctères

t2

tableau des réels

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 saisie_complexe

Cette fonction saisit un nombre complexe .

Déclaration des objets

Objet

Type / Nature

n

entier

La procédure remplir

Cette procédure remplit les deux tableau t1 et t2 de n entiers.

Déclaration des objets

Objet

Type / nature

i

entier

a

entier

b

entier

La procédure tri_bulle_decroissant

Cette procédure trie les deux tableaux T1 et T2 selon les valeurs décroissantes de T2 en utilisant l'algorithme tri à bulles.

Déclaration des objets

Objet

Type / Nature

i

entier

permuter

booléen

temp1

chaîne des cartectères

temp2

réel

La procédure afficher

Cette procédure parcourt les tableaux triés et on affiche les nombres complexes du tableau T1 en les regroupant par modules similaires.

Déclaration des objets

Objet

Type / Nature

i

entier

Solution en Python

Exécution du programme

1) Remplissage des deux tableaux

2) Trier les deux tableaux

3) Affichage des nombres complexes du tableau T1 en les regroupant par modules similaires.

Solution en Python et Designer QT

Pour résoudre le problème précédent à partir d'une chaîne de caractères en Python, vous pouvez suivre les étapes suivantes :

a- Découper la chaîne de caractères en sous-chaînes.

b- Ajouter chaque sous-chaîne au tableau.

c- Suivre les étapes mentionnées dans partie préceédente

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 à partir de la chaine 'ch'.

QPushButton nommé 'trier_bt' pour exécuter le module tri_bulle_decroissant.

QPushButton nommé 'afficher_bt' pour exécuter le module afficher_lignes.

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 t1.

QLabel nommé 'tab2_label' pour afficher les éléments du tableau t2.

QLabel nommé 'ligne_label' pour afficher les nombres complexes du tableau T1 en les regroupant par modules similaires.

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

1) Remplissage des deux tableaux

2) Trier les deux tableaux

3) Affichage des nombres complexes du tableau T1 en les regroupant par modules similaires.

 

Vous pouvez voir aussi :

1) des exercices sur les chaînes des caractères

2) des exercices sur les tableaux

3) des sujets Bac pratique

4) des sujets Bac théorique

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