Conversion d`Ecriture Romaine

Transcription

Conversion d`Ecriture Romaine
IUT Informatique
TP développement C++
S2
Conversion d’Ecriture Romaine - Décimale
1ère partie : Conversion Nombre Romain - Nombre Entier
Un nom bre rom ain est com posé d e chiffres rom ains : I (pour 1), V (pour 5), X (pour
10), L (pour 50), C (pour 100), D (pour 500) et M (pour 1000).
×
Règles de formation des nombres romains (de 1 à 3999)
· Au plu s, t r ois r épét it ion s con sécu t ives de M, C, X et I.
· Au plu s, u n e seu le occu r r en ce D, L et V.
· Un seu l C peu t pr éfixer un M ou u n D. Les ch iffr es a pr ès M ou D
r epr ésen t en t u n e valeu r qu i n e peu t êt r e supé r ieu r e à 99.
· Un seul X peu t pr éfixer u n C ou un L. Les ch iffr es a pr ès C ou L
r epr ésen t en t u n e valeu r qu i n e peu t êt r e supér ieu r e à 9.
· Un seul I peu t pr éfixer un X ou un V. Le chiffr e pr éfixé n e peu t a ppa r a ît r e
qu 'à la fin du n om br e.
On su ppose qu ’il est r epr ésen t é pa r un e ch a în e de ca r a ct èr es 1 (t ype st rin g en
C++).
A cet t e ch a în e "C 0 C 1 …C n -1 " de n ca r a ct èr es cor r espon d u n n om br e en t ier obt en u
pa r a ddit ion s su ccessives des valeu r s a ssociées a u x ca ra ct èr es C i com posa n t le
n om br e r om a in . Cependa n t , si deu x ca r a ctèr es con sécu t ifs C i et C i+1 son t t els
qu e la va leu r a ssociée a u ca r a ct èr e C i est in fér ieu r e à la va leu r a ssociée a u
ca r a ct èr e C i+1 , a lor s la va leu r du ca r a ct èr e C i est r et r a n ch ée a u n om br e en t ier .
E xem ples :
a ) Le n om br e r om a in "VI" don n e le n om br e en t ier 6.
b) Le n om br e r om a in "CM" don n e le n om bre en t ier 900.
c) Le n om br e r om a in "MDXLV " don n e le n om br e en t ier 1545.
1 En respectant les règles d e form ation d es nom bres romains et avec les caractères rom ains proposés
d ans le sujet, on ne peut prend re en com pte que d es nom bres rom ains inférieurs ou égaux à 3 999. Le
nom bre en chiffres rom ains le plus long possèd e alors 15 caractères rom ains : MMMDCCCLXXXVIII,
soit 3888.
-1-
IUT Informatique
TP développement C++
S2
1) On souh a it e écr ir e u n e a pplica t ion qu i lit un n om br e r om a in et qu i affich e
sa va leu r en t ièr e. On supposer a qu e le n om br e r om a in sa isi est
syn t a xiqu em en t cor r ect , c’est -à -dir e qu ’il respect e les r ègles fou r n ies cidessou s et on défin ir a un sou s-pr ogr a m m e de con ver sion d’u n n om br e
r om a in en n om br e en t ier .
2) Cr éer u n sou s-pr ogr a m m e de sa isie d’u n n om br e r om a in en déclen ch an t
des except ion s différ en t es s’il est m a l for m é.
3) Modifier le pr ogr a m m e pou r r edem a nder à l’u t ilisa t eu r la saisie d’un
n ou veau n om br e t a n t qu e le n om br e r om a in n ’est pa s cor r ect en pr écisa n t ,
a u n ivea u de l’a ffich a ge, le ca s d’an om a lie qu i s’est pr odu it . On se ser vir a
de t ry et cat ch et on ne fera aucune boucle tant que.
2ème partie : Conversion Nombre Entier - Nombre Romain
Soit le t a blea u con v à deu x dim en sion s ci-dessou s et m ém or isa n t des ch a în es
r om a in es. Les élém en t s de ce t a blea u son t des ch aîn es de ca r a ct èr es. La
ch a în e ″″ t r a du it un e ch aîn e vide.
posit ion du ch iffre
v aleur du ch iffre
0
1
2
3
4
5
6
7
8
9
0
″″
″I″
″II″
″III″
″IV″
″V″
″VI″
″VII″
″VIII″
″IX″
1
″″
″X″
″XX″
″XXX″
″XL″
″L″
″LX″
″LXX″
″LXXX″
″XC″
2
″″
″C″
″CC″
″CCC″
″CD″
″D″
″DC″
″DCC″
″DCCC″
″CM″
3
″″
″M″
″MM″
″MMM″
″″
″″
″″
″″
″″
″″
On pr opose la m ét h ode su iva n t e pou r con ver t ir u n n om br e en t ier en u n n om br e
r om a in :
· ext r a ir e les ch iffr es décim au x du n om br e ent ier ,
· n u m ér ot er les ch iffr es décim a u x ext r a it s en fon ct ion de leu r posit ion , à
pa r t ir du r a ng 0 pou r le ch iffr e des u nit és,
· pou r ch a qu e ch iffr e ext r a it , r ecopier la ch a în e du t a blea u con v.
-2-
IUT Informatique
TP développement C++
S2
E xem ple :
Le n om br e en t ier 1545 fou r n it le n om bre r om a in "MDXLV" pa r le sch ém a
su iva n t :
pos ition du chiffre
3
2
1
0
nombre entier
1
5
4
5
nombre romain
M
D
X
L
V
La sou s-ch a în e "XL" du n om br e r om a in s'obt ien t à pa r t ir de la 5 èm e lign e (va leu r
du ch iffr e = 4) et de la 2 èm e colonn e du t a blea u con v (posit ion du ch iffr e = 1).
1) Défin ir la con st a n t e con v a ssociée a u t a bleau de con ver sion .
2) On sou ha it e écr ir e u n e applica t ion qu i lit u n n om b r e en t ier et qu i a ffich e
sa va leu r r om a in e. On défin ir a :
u n sou s-pr ogr a m m e ca pa ble de lir e u n n om br e en t ier en s’a ssu r an t
qu ’il n ’est pa s su pér ieu r à 3999 (plu s gr an d n om br e r om a in ),
· u n sou s-pr ogr a m m e de con ver sion d’un nom br e en t ier en n om br e
r om a in .
Tou t com m e da n s la pr em ièr e pa r t ie, t ou t e m a u va ise sa isie du n om br e
en t ier en t r a în er a u n e n ouvelle sa isie par l’u t ilisa t eu r de la va leu r
en t ièr e (u t ilisa t ion de t ry et cat ch sa n s u t ilisa t ion de bou cle t an t qu e).
·
-3-

Documents pareils