Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ---------------------------
- Laboratoire : 7
- Fichier : main_L7.cpp
- Auteur(s) : Olivier Koffi &
- Date : 23.11.2017
- But :
- Remarque(s) :
- Compilateur : MinGW-g++ 6.3.0
- --------------------------- */
- #include <cstdlib>
- #include <string>
- #include <iostream>
- using namespace std;
- int romainToArabe(string chiffreRomain);
- string arabeToRomain(int chiffreArabe);
- bool estUnChiffreRomain (char chiffre);
- int main() {
- string saisie = "";
- while(1) {
- getline(cin,saisie);
- cout << romainToArabe(saisie) << endl;
- }
- return EXIT_SUCCESS;
- }
- bool estUnChiffreRomain (char chiffre) {
- return chiffre == 'I' || chiffre == 'V' || chiffre == 'X' || chiffre == 'L' || chiffre == 'C' || chiffre == 'D' || chiffre == 'M';
- }
- /*
- int conversionRomainEnEntier (char chiffre) {
- int entier = 0;
- if(chiffre == 'I') entier = 1;
- if(chiffre == 'V') entier = 5;
- if(chiffre == 'X') entier = 10;
- if(chiffre == 'L') entier = 50;
- if(chiffre == 'C') entier = 100;
- if(chiffre == 'D') entier = 500;
- if(chiffre == 'M') entier = 1000;
- return entier;
- }
- */
- int romainToArabe (string chiffreRomain) {
- int chiffreArabe = 0;
- bool erreur = false;
- for(int i = 0; i < chiffreRomain.length(); i++) {
- if(estUnChiffreRomain(chiffreRomain[i])) {
- switch(chiffreRomain[i]) {
- case 'I' :
- if(chiffreRomain[i+1] == 'V' || chiffreRomain[i+1] == 'X') {
- chiffreArabe -= 1;
- } else if((chiffreRomain.length() - 1) != i && chiffreRomain[i+1] == 'I' ) {
- chiffreArabe += 1;
- } else {
- erreur = true;
- }
- break;
- case 'V' :
- if(chiffreRomain[i+1] == 'X' || chiffreRomain[i+1] == 'L') {
- chiffreArabe -= 5;
- } else if(chiffreRomain[i+1] == 'I' || chiffreRomain[i+1] == 'V') {
- chiffreArabe += 5;
- } else {
- erreur = true;
- }
- break;
- case 'X' :
- if(chiffreRomain[i+1] == 'L' || chiffreRomain[i+1] == 'C') {
- chiffreArabe -= 10;
- } else if(chiffreRomain[i+1] == 'D' || chiffreRomain[i+1] == 'M') {
- erreur = true;
- } else {
- chiffreArabe += 10;
- }
- break;
- case 'L' :
- if(chiffreRomain[i+1] == 'C' || chiffreRomain[i+1] == 'D') {
- chiffreArabe -= 50;
- } else if(chiffreRomain[i+1] == 'M') {
- erreur = true;
- } else {
- chiffreArabe += 50;
- }
- break;
- case 'C' :
- if(chiffreRomain[i+1] == 'D' || chiffreRomain[i+1] == 'M') {
- chiffreArabe -= 100;
- } else {
- chiffreArabe += 100;
- }
- break;
- case 'D' :
- if(chiffreRomain[i+1] == 'M') {
- chiffreArabe -= 500;
- } else {
- chiffreArabe += 500;
- }
- break;
- case 'M' :
- chiffreArabe += 1000;
- break;
- }
- }
- else {
- erreur = true;
- }
- }
- return chiffreArabe;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement