Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.42 KB | None | 0 0
  1. /* ---------------------------
  2.  Laboratoire : 7
  3.  Fichier :     main_L7.cpp
  4.  Auteur(s) :   Olivier Koffi &
  5.  Date :        23.11.2017
  6.  
  7.  But :              
  8.  
  9.  Remarque(s) :
  10.  
  11.  Compilateur : MinGW-g++ 6.3.0
  12.  --------------------------- */
  13.  
  14. #include <cstdlib>
  15. #include <string>
  16. #include <iostream>
  17.  
  18. using namespace std;
  19.  
  20. int romainToArabe(string chiffreRomain);
  21. string arabeToRomain(int chiffreArabe);
  22. bool estUnChiffreRomain (char chiffre);
  23.  
  24. int main() {
  25.    string saisie = "";
  26.    
  27.    while(1) {
  28.       getline(cin,saisie);
  29.       cout << romainToArabe(saisie) << endl;
  30.    }
  31.    return EXIT_SUCCESS;
  32. }
  33.  
  34. bool estUnChiffreRomain (char chiffre) {
  35.    return chiffre == 'I' || chiffre == 'V' || chiffre == 'X' || chiffre == 'L' || chiffre == 'C' || chiffre == 'D' || chiffre == 'M';
  36. }
  37. /*
  38. int conversionRomainEnEntier (char chiffre) {
  39.    int entier = 0;
  40.    if(chiffre == 'I') entier = 1;
  41.    if(chiffre == 'V') entier = 5;
  42.    if(chiffre == 'X') entier = 10;
  43.    if(chiffre == 'L') entier = 50;
  44.    if(chiffre == 'C') entier = 100;
  45.    if(chiffre == 'D') entier = 500;
  46.    if(chiffre == 'M') entier = 1000;
  47.    
  48.    return entier;
  49. }
  50. */
  51. int romainToArabe (string chiffreRomain) {
  52.    int chiffreArabe = 0;
  53.    bool erreur = false;
  54.    
  55.  
  56.    for(int i = 0; i < chiffreRomain.length(); i++) {
  57.       if(estUnChiffreRomain(chiffreRomain[i])) {
  58.          switch(chiffreRomain[i]) {
  59.             case 'I' :
  60.                if(chiffreRomain[i+1] == 'V' || chiffreRomain[i+1] == 'X') {
  61.                   chiffreArabe -= 1;  
  62.                } else if((chiffreRomain.length() - 1) != i && chiffreRomain[i+1] == 'I' ) {
  63.                   chiffreArabe += 1;
  64.                } else {
  65.                   erreur = true;
  66.                }
  67.                break;
  68.             case 'V' :
  69.                if(chiffreRomain[i+1] == 'X' || chiffreRomain[i+1] == 'L') {
  70.                   chiffreArabe -= 5;  
  71.                } else if(chiffreRomain[i+1] == 'I' || chiffreRomain[i+1] == 'V') {
  72.                   chiffreArabe += 5;
  73.                } else {
  74.                   erreur = true;
  75.                }
  76.                break;
  77.             case 'X' :
  78.                if(chiffreRomain[i+1] == 'L' || chiffreRomain[i+1] == 'C') {
  79.                   chiffreArabe -= 10;  
  80.                } else if(chiffreRomain[i+1] == 'D' || chiffreRomain[i+1] == 'M') {
  81.                   erreur = true;
  82.                } else {
  83.                   chiffreArabe += 10;
  84.                }
  85.                break;
  86.             case 'L' :
  87.                if(chiffreRomain[i+1] == 'C' || chiffreRomain[i+1] == 'D') {
  88.                   chiffreArabe -= 50;  
  89.                } else if(chiffreRomain[i+1] == 'M') {
  90.                   erreur = true;
  91.                } else {
  92.                   chiffreArabe += 50;
  93.                }
  94.                break;
  95.             case 'C' :
  96.                if(chiffreRomain[i+1] == 'D' || chiffreRomain[i+1] == 'M') {
  97.                   chiffreArabe -= 100;  
  98.                } else {
  99.                   chiffreArabe += 100;
  100.                }
  101.                break;
  102.             case 'D' :
  103.                if(chiffreRomain[i+1] == 'M') {
  104.                   chiffreArabe -= 500;  
  105.                } else {
  106.                   chiffreArabe += 500;
  107.                }
  108.                break;
  109.             case 'M' :
  110.                chiffreArabe += 1000;
  111.                break;
  112.          }
  113.       }
  114.       else {
  115.          erreur = true;
  116.       }
  117.    }
  118.    return chiffreArabe;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement