fork(16) download
  1. Program romain_decimal;
  2. Var ch : string;
  3. (******************************************)
  4. Procedure saisie(var ch : string);
  5. Function valide(ch : string):boolean;
  6. Var i : integer;
  7. ok : boolean;
  8. Begin
  9. i:=0;
  10. Repeat
  11. i:=i+1;
  12. ok:= ch[i] in ['M','D','C','L','X','V','I'] Until (not ok) or (i=length(ch));
  13. valide := ok;
  14. End;
  15. Begin
  16. Repeat
  17. Write('Entrer un nombre en chiffres romains : ');
  18. Readln(ch);
  19. Until valide(ch);
  20. End;
  21. (********************************************)
  22. Function convert(ch : string):integer;
  23. Var i, s, v, v2 : integer;
  24. Function decimal(c : char):integer;
  25. Begin
  26. Case c Of
  27. 'I' : decimal := 1;
  28. 'V' : decimal := 5;
  29. 'X' : decimal := 10;
  30. 'L' : decimal := 50;
  31. 'C' : decimal := 100;
  32. 'D' : decimal := 500;
  33. 'M' : decimal := 1000;
  34. End;
  35. End;
  36. Begin
  37. s := 0;
  38. For i:=1 To Length(ch) Do
  39. Begin
  40. v := decimal(ch[i]);
  41. If (i < Length(ch)) Then
  42. Begin
  43. v2 := decimal(ch[i+1]);
  44. If (v < v2) Then v:= -v;
  45. End;
  46. s := s + v;
  47. End;
  48. convert := s;
  49. End;
  50. (**********************P.P******************)
  51. Begin
  52. Saisie(ch);
  53. Writeln(ch , ' = ', convert(ch));
  54. End.
Success #stdin #stdout 0s 232KB
stdin
X
stdout
Entrer un nombre en chiffres romains : X = 10