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-