Traiter les chiffres romains [ Algorithme + Python ]

Algo et Python 03-08-24
146 0

Sujet bac informatique pratique 2013 (Bac scientifique)

La notation des nombres romains est basée sur l’utilisation des lettres M,D,C,L,X,V et I.

On se propose d’écrire un programme qui à partir d’une chaîne de caractères formée uniquement de chiffres romains, donne son équivalent décimal selon le principe suivant :

- L’équivalent décimal de chaque chiffre romain est : M=1000, D=500, C=100, L=50, X=10, V=5 et I=1.

- L’équivalent décimal de chaîne de chiffres romains est obtenu en additionnant les équivalents décimaux de ses chiffres.

Le parcours de la chaîne se fait de gauche àdroite et dans le cas où un chiffre est inférieur à son successeur, il sera précédé du signe moins(-)

Exemples :

CDXL= -100+500-10+50=440

CXVI=100+10+5+1=116

CXIV=100+10-1+5=114

MMCIX=1000+1000+100-1+10=2109

Solution Algorithmique

Pour convertir une chaîne de caractères formée uniquement de chiffres romains en son équivalent décimal, on peut utiliser l'algorithme suivant :

1- Créer un dictionnaire pour mapper chaque chiffre romain à sa valeur décimale.

2- Parcourir la chaîne de gauche à droite.

3- Ajouter la valeur du chiffre actuel à la somme totale. Si la valeur du chiffre actuel est inférieure à celle du chiffre suivant, soustraire cette valeur de la somme totale.

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

 

Algorithme du programme principal

Déclaration des objets

Objet

Type / Nature

ch

chaîne des caractères

La fonction verif_romain

Cette fonction vérifie si une chaîne est formée uniquement des chiffres romains.

Déclaration des objets

Objet

Type / Nature

i

entier

La fonction saisie_nombre_romain

Cette fonction retourne une chaîne formée des chiffres romains.

Déclaration des objets

Objet

Type / Nature

ch

chaîne des caractères

La fonction equivalent_decimal

Cette fonction convertit un chiffre romain en un chiffre décimal.

La fonction nombre_decimal

Cette fonction convertir une chaîne formée des chiffres romains en un nombre décimal.

Déclaration des objets

Objet

Type / Nature

i

entier

v1

entier

v2

entier

s

entier

Solution en Python

Exécution du programme

Solution en Python et Designer QT

Pour créer une application en Python pour convertir une chaîne formée des chiffres romains en un nombre décimal 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é 'ch' pour entrer des lettres romains .

QPushButton nommé 'decimal_bt' pour exécuter le module nombre_decimal afin de remplir le tableau à partir de la chaine 'ch'.

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

QLabel nommé 'decimal_equivalent' pour afficher le nombre décimal équivalent.

Enregistrez le fichier avec l'extension .ui, par exemple chiffres-romains-interface.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

 

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