Résidents gagnants – Bac Pratique 2015 [ Algorithme + Python ]

Algo et Python 31-08-24
30 0

Travail demandé

Un hôtel souhaite attribuer des séjours gratuits à ses résidents à l’occasion de la fête de fin d’année en se basant sur leurs numéros de réservation qui sont des entiers de 4 chiffres.

Les résidents gagnants sont ceux qui possèdent plus de nombres premiers formés à partir de leurs numéros de réservation (le nombre lui-même, les nombres formés de trois chiffres adjacents, les nombres formés de deux chiffres adjacents et les nombres formés par un seul chiffre).

Exemple : Pour les numéros de réservation suivants :                                                                                                    T:

3322 4774 3114 1012 2537 2291 1854 3149 4766 1579

Les numéros de réservation des résidents gagnants est : 2537 et 1579 puisque :

- 2537 possède 5 nombres premiers qui sont 3, 5, 7, 53 et 37

- 1579 possède 5 nombres premiers qui sont 5, 7, 79, 157 et 1579

N.B : un nombre est dit premier s’il n’est divisible que par 1 et par lui-même. Par définition, 1 n’est pas premier.

Ecrire un programme Python qui permet de remplir un tableau T par n (10≤N≤100) numéros de réservation, puis d’afficher la liste des résidents gagnants.

Solution Algorithmique

Pour résoudre ce problème, voici le principe de l'algorithme qui permet de remplir un tableau T par n numéros de réservation, puis d'afficher la liste des résidents gagnants :

1. Remplir le tableau T :

Générer n numéros de réservation, chacun étant un entier de 4 chiffres. Ces numéros sont fournis comme entrée.

2. Vérifier si un nombre est premier :

Implémenter une fonction test_premier(nombre) qui prend un entier en entrée et renvoie Vrai si ce nombre est premier, sinon Faux.

Un nombre est premier s'il est supérieur à 1 et n'a pas de diviseurs autres que 1 et lui-même.

3. Extraire tous les sous-nombres d'un numéro de réservation :

Pour chaque numéro de réservation dans T, extraire tous les sous-nombres possibles en considérant les chiffres adjacents.

Pour un numéro de réservation à 4 chiffres abcd :

- Sous-nombres de 4 chiffres : abcd

- Sous-nombres de 3 chiffres : abc, bcd

- Sous-nombres de 2 chiffres : ab, bc, cd

- Sous-nombres de 1 chiffre : a, b, c, d

4. Calculer le nombre de nombres premiers pour chaque numéro de réservation :

- Pour chaque numéro de réservation dans T, utiliser la fonction test_premier(nombre) pour vérifier si chaque sous-nombre est premier.

- Compter le nombre de sous-nombres premiers pour chaque numéro.

5. Trouver les résidents gagnants :

- Identifier les numéros de réservation ayant le plus grand nombre de sous-nombres premiers.

- Si plusieurs numéros ont le même nombre maximum de sous-nombres premiers, ils sont tous gagnants.

- Afficher les numéros de réservation correspondant aux résidents gagnants.

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

Déclaration des objets

Objet

Type / Nature

t

tableau de 100 entiers

t1

tableau de 100 entiers

n

entier

m

entier

La fonction saisie_taille

Cette fonction retourne un entier n entre 10 et 100 saisi par l'utilisateur.

Déclaration des objets

Objet

Type / Nature

n

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 fonction test_premier

Cette fonction teste si un entier est premier ou non.

Déclaration des objets

Objet

Type / Nature

i

entier

La fonction nbr_premiers

Cette fonction compte le nombre de sous-nombres premiers d'un entier donné

Déclaration des objets

Objet Type / Nature
ch chaîne des caractères
i entier
cp entier

La fonction max_premiers

Cette fonction retourne le plus grand nombre de sous-nombres premiers des entiers du tableau T .

Déclaration des objets

Objet Type / Nature
max entier
i entier

 

La procédure reservations_gagnantes

Cette procédure identifie et affiche les numéros de réservation ayant le plus grand nombre de sous-nombres premiers.

Déclaration des objets

Objet Type / Nature
max entier
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, 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 identifier et afficher les numéros de réservation ayant le plus grand nombre de sous-nombres premiers.

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é 'bt_recherche' pour exécuter le module reservations_gagnantes.

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 non formé de quatre chiffres.

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

QLabel nommé 'resultat' pour afficher les numéros des réservations gagnantes.

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