Localiser des bateaux – Bac Pratique 2016 [ Algorithme + Python ]

Algo et Python 17-09-24
38 0

Travail demandé

Un tableau en détresse a lancé un appel de secours (SOS). Pour le sauver, le commandant de la garde côte a besoin de localiser le(s) bateau(x) proche(s) de celui-ci. En s’appuyant sur leurs coordonnées (X,Y) fournis par le radar du commandant(comme l’illustre l’exemple de la figure ci-dessous), la localisation des bateaux se fait par le calcul des distances qui les séparent du bateau en détresse.

Pour aider le commandant de la garde côte, on se propose d’écrire un programme qui permet de :

1- saisir les coordonnées du bateau en détresse (Xd,Yd).

2- saisir les coordonnées de n autres bateaux dans deux tableaux Tx et Ty  (avec 1≤n≤50) ou Tx contient les abscisses et Ty contient les ordonnées. Il est à noter que deux bateaux (y compris le bateau en détresse) ne peuvent pas avoir les mêmes coordonnées.

3- remplir un tableau Td par les distances qui séparent les différents bateaux du bateau en détresse.

4- afficher les coordonnées (X,Y) des bateaux, de plus proche au plus loin du bateau en détresse

N.B : La distance dAB qui sépare deux points A et B de coordonnées respectives (Xa,Ya) et (Xb,Yb) est calculée comme suit :

Exemple:

Pour les coordonnées du bateau en détresse (Xd,Yd)=(500,300), le nombre de bateaux N=5 et les deux tableaux Tx et Ty suivants :

Tx

1000 500 100.25 -350 1200

Ty

-300 400 -90 75 358.14

Le calcul des distances donne le tableau Td suivant :

781.02 100 558.48 879.28 702.41

Le programme affiche les coordonnées des tableaux dans l’ordre suivant : (500,400)(100.25,-90)(1200,358.14)(1000,-300)(-350,75)

Solution Algorithmique

Pour aider à localiser les bateaux proches du bateau en détresse en calculant les distances, nous allons suivre les étapes algorithmiques suivantes :

Approche algorithmique

1. Saisie des coordonnées du bateau en détresse (Xd,Yd):

L’utilisateur saisit les coordonnées Xd et Yd du bateau en détresse.

2. Saisie des coordonnées des n autres bateaux dans deux tableaux Tx et Ty :

L’utilisateur saisit les coordonnées (Xi,Yi) de chaque bateau (où i va de 0 à n).

Les coordonnées de l’abscisse de chaque bateau sont stockées dans Tx, et celles de l’ordonnée dans Ty.

3. Calcul des distances entre les bateaux et le bateau en détresse :

Pour chaque bateau i, on calcule la distance à l’aide de la formule de la distance euclidienne :

Ces distances sont stockées dans un tableau Td.

4. Trier les bateaux en fonction de leur distance au bateau en détresse :

On trie les bateaux en fonction de leurs distances au bateau en détresse en utilisant le tableau Td (distances).

Le tri sera fait de manière à ce que les coordonnées des bateaux les plus proches apparaissent en premier.

5. Afficher les coordonnées des bateaux triés du plus proche au plus éloigné :

On affiche les coordonnées des bateaux triés en fonction de leur distance au bateau en détresse.

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

Algorithme du programme principal

Déclaration des objets

Objet Type / Nature
xd réel
yd réel
n entier
tx tableau des 30 réels
ty tableau des 30 réels
td tableau des 30 réels

 

La fonction saisie_taille

Cette fonction retourne la taille du tableau entre 1 et 50 saisie par l'utilisateur.

Déclaration des objets

Objet Type / Nature
n entier

 

La fonction verif_unicite

Cette fonction vérifie si les coordonnées d'un bateau ne se trouve pas les deux tableaux tx et ty.

Déclaration des objets

Objet Type / Nature
j entier

 

La procédure remplir

Cette procédure remplit le tableau tx par les abscisses des bateaux et le tableau ty par les ordonnées de ces bateaux.

Déclaration des objets

Objet Type / Nature
i entier

 

La procédure calcul_distance

Cette procédure calcule les distances entre les bateaux et le bateau en détresse et les stocke dans le tableau td

Déclaration des objets

Objet Type / Nature
i entier

 

La procédure tri

Cette procédure trie les coordonnées des bateaux en fonction de leurs distances au bateau en détresse en utilisant le tableau Td

Déclaration des objets

Objet Type / Nature
i entier
j entier
min entier
temp entier

 

La procédure affiche

Cette procédure affiche les coordonnées des bateaux triés en fonction de leur distance au bateau en détresse.

Déclaration des objets

Objet Type / Nature
i entier

 

Solution en Python

Exécution du programme

Solution en Python et Designer QT

Pour créer une application en Python pour aider à localiser les bateaux proches du bateau en détresse en calculant les distances, en utilisant Qt Designer pour l'interface graphique, suivez ces étapes :

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é 'xd' pour entrer l'abscisse du bateau en détresse.

QLineEdit nommé 'yd' pour entrer l'ordonnée du bateau en détresse.

QLineEdit nommé 'ch1' pour entrer les abscisses des bateaux.

QLineEdit nommé 'ch2' pour entrer les ordonnées des bateaux.

QPushButton nommé 'remplirtx_bt' pour exécuter le module createTabX.

QPushButton nommé 'remplirty_bt' pour exécuter le module createTabY.

QPushButton nommé 'remplirtd_bt' pour exécuter le module createTabD.

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

QLabel nommé 'msg' pour afficher un message d'erreur

QLabel nommé 'tabtx_label' pour contenir les abscisses des bateaux.

QLabel nommé 'tabty_label' pour contenir les ordonnées des bateaux.

QLabel nommé 'tabtd_label' pour contenir les distances entre le bateau en détresse et les autres bateaux.

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) Entrer les coordonnées du bateau en détresse

2) Entrer les abscisses des bateaux dans TX et les ordonnées dans TY

3) Calculer les distances entre les bateaux et le bateau en détresse et les stocke dans le tableau TD

4) Trier les coordonnées des bateaux en fonction de leurs distances au bateau en détresse en utilisant le tableau TD.

 

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