Vous êtes sur la page 1sur 3

Enseignant : M.

MSALMI Hichem Série N°31 (Pratique) 4SI


Important :
✓ Toutes les ressources à utiliser se trouvent dans le répertoire "Ressources"
situé sur la racine du disque C.
✓ Il est demandé au candidat :
• de créer, dans le répertoire Bac2023 situé sur la racine du disque C, un
dossier de travail portant son numéro d’inscription (6 chiffres) et dans lequel
il doit enregistrer, au fur et à mesure, tous les fichiers solutions de ce sujet.
• de copier, dans son dossier de travail, le fichier "SerieNum30.rar" situé
dans "C:\Ressources", puis d’extraire son contenu, en utilisant le mot de
passe "222111", dans ce même dossier de travail.
✓ d’élaborer une solution modulaire au problème posé.
✓ de vérifier à la fin de l’épreuve que tous les fichiers créés sont dans son
dossier de travail.

Le principe de jeu est de :


- Choisir un nombre hexadécimal
- L’ordinateur choisit aussi un nombre hexadécimal non vide de taille
aléatoire au maximum 10 caractères et distinct de votre premier nombre
- Les deux nombres seront sauvegardés dans un fichier texte nommé
"Source.txt" contenant dans chaque ligne votre nom, téléphone, genre,
niveau, puis deux points et les deux nombres (séparés par un espace)
Nb : Nom : formé par des lettres et espaces
Téléphone : formé par 8 chiffres
Chaque une ligne du fichier source.txt est sous la forme :
Nom téléphone genre niveau : nombre1 nombre2
Exemple d’une ligne du fichier source.txt :
Anwar Aloui 21232456 H Eleve : 0FA 129

On veut réaliser le traitement suivant :


• Former à partir du fichier "source.txt" un deuxième fichier d’enregistrements
nommé "Nombres.dat" chaque enregistrement contient les champs suivants :
- Lig : Numéro de la ligne du fichier initial
- Inf : Votre nom, téléphone, genre, niveau
- Nb1_bin : nombre binaire correspondant au premier nombre hexadécimal
de la ligne (lig) du fichier "source.txt".
- Nb2_bin : nombre binaire correspondant au deuxième nombre
hexadécimal de la ligne (lig) du fichier "Source.txt".
- Hamming : distance de Hamming entre Nb1_bin et Nb2_bin (Voir
annexe1).
- Som : la somme en base décimale des deux nombres Nb1_bin et Nb2_bin
(Voir annexe2).
• Transférer du fichier "Nombres.dat" tous les nombres (Som) qui sont divisibles
par 7 dans un fichier nommé "Div7.txt" (Voir annexe3).
• Les gagnants du jeu sont les personnes ayant des nombres dont leur distance
Hamming est maximale ou bien leur Som existe dans le fichier nommé
"Div7.txt"
Afficher les noms des gagnants suivis par le couple des nombre binaires ayant
cette distance maximale.
Enseignant : M. MSALMI Hichem Série N°31 (Pratique) 4SI
Annexe 1 : La distance de Hamming entre les représentations binaires de deux
entiers X et Y est le nombre des positions correspondant à des bits différents dans les
deux écritures en partant de la droite et après avoir ajuster leurs longueurs.
Exemple :
Pour X = 1001101 et Y =10011, on doit ajouter des zéro à l’extrême gauche de y
on aura Y = 0010011, d’où la distance de Hamming sera égale à 5.
Annexe 2 : Pour additionner les nombres (FA) et (A1E) nous procédons comme suit :

A + E c’est-à-dire 10 + 14 = 24 → 24 > 16 donc (24 – 16 = 8) et on retient 1


1 + F + 1 c’est-à-dire 1 + 15 + 1 = 17 → 17 > 16 donc (17 – 16 = 1) et on retient 1
1 + 0 + A c’est-à-dire 1 + 0 + 10 = 11 → 11 < 16 donc B dans la base 16
Som : B18 à la base décimale 2840 → Som=2840

Annexe 3 : Pour vérifier si un nombre décimal X est divisible par 7, on procède


comme suit :
1) Découper le nombre X par tranche de 2 chiffres, en partant par la droite et
former un nouveau nombre à partir des restes de la division entière par 7 de
chaque tranche.
2) Répéter l’étape précédente sur le nouveau nombre obtenu jusqu’à obtenir un
nombre composé d’un seul chiffre. Le nombre X est divisible par 7 si le dernier
nombre obtenu est égale à 0.
Exemple :
Pour X = 5527579818992
Etape 1 :
5 52 75 79 81 89 92
5 3 5 2 4 5 1
Nouveau nombre sera 5352451
Etape 1 une autre fois :
5 35 24 51
5 0 3 2
Nouveau nombre sera 5032
Etape 1 une autre fois :
50 32
1 4
Nouveau nombre sera 14
Etape 1 une autre fois :
14
0
Nouveau nombre sera 0
Le dernier nombre obtenu est 0 donc le nombre 5527579818992 est divisible par 7

On se propose de concevoir une interface graphique contenant les éléments suivants :


o Un label contenant le texte : Nom et Prénom
o Une zone de saisie permettant la saisie du nom et prénom
o Un label contenant le texte : Téléphone
o Une zone de saisie permettant la saisie du téléphone
Enseignant : M. MSALMI Hichem Série N°31 (Pratique) 4SI
o Un label contenant le texte : Genre
o Deux boutons radio pour choisir entre Homme (H) et Femme (F)
o Un label contenant le texte : Niveau
o Une liste déroulante contenant les Niveaux : Votre niveau ou Eleve ou Etudiant
ou Autre
o Un bouton : Ajouter
o Un TableWidget contenant les colonnes Ligne, Information, Nb1_bin, Nb2_bin,
Hamming, Som pour afficher le fichier "Nombres.dat"
o Un bouton : Afficher
o Une ListWidget pour afficher le fichier "Div7.txt"
o Un bouton : Afficher Div7
o Une ListWidget pour afficher les gagnants
o Un bouton : Lister

Travail demandé :
1/ Compléter l’interface graphique Inter_Jeu_H.ui
2/ Ouvrir le fichier nommé "Jeu H.py" situé dans votre dossier de travail dans lequel
vous apportez les modifications suivantes :
• développer le module "Ajouter", qui s’exécute suite à un clic sur le bouton
"Ajouter", et permettant, lorsque toutes les contraintes sont respectées, d’ajouter
une ligne au fichier "Source.txt" sinon d’afficher, dans le cas contraire, un
message d’alerte via "QMessagebox".
• développer le module "Afficher", qui s’exécute suite à un clic sur le bouton
"Afficher", permettant d’afficher dans la table Widget le fichier "Nombres.dat"
• développer le module "AfficherDiv7", qui s’exécute suite à un clic sur le bouton
"Afficher Div7", permettant d’afficher dans l’élément liste Widget, le fichier
"Div7.txt"
• développer le module "Lister", qui s’exécute suite à un clic sur le bouton
"Lister", permettant d’afficher dans l’élément Liste Widget1, les gagnants du jeu
• Compléter les instructions de la partie exploitation de l’interface graphique par
les informations nécessaires à l’appel de l’interface "Inter_Jeu_H.ui" et aux
différents modules développés.

Vous aimerez peut-être aussi