home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 21 / IOPROG_21.ISO / SOFT / ROMAN.ZIP / roman.cpp
Encoding:
C/C++ Source or Header  |  1997-09-19  |  2.2 KB  |  60 lines

  1.  
  2.      #include
  3.  
  4.      ////////////////////////////////////////////////////////////////////////////
  5.      // main                                                               repeat
  6.      // =====
  7.      // Repeat a character n number of times.
  8.      //
  9.      void repeat(char c, int n) {
  10.         for(int i = 0; i < n; ++i)
  11.            cout << c;
  12.      } // end repeat
  13.  
  14.  
  15.      ////////////////////////////////////////////////////////////////////////////
  16.      // main                                                                 main
  17.      // =====
  18.      // Convert a English number into a Roman number.
  19.      //
  20.      void main(void) {
  21.         int eng, done;
  22.         char finished;
  23.  
  24.         done = false;
  25.         while (done == false) {
  26.            eng = -1;
  27.            while (eng > 9999 || eng < 1) {
  28.               cout << "Enter an English number: ";
  29.               cin >> eng;
  30.            } // end while
  31.            cout << "The Roman number is: ";
  32.            // English to Roman Conversion
  33.            if (eng >  999) { repeat('M', eng/1000); eng=(eng-(eng/1000)*1000); }
  34.            if (eng >  900) { cout << "CM"; eng = eng - 900; }
  35.            if (eng >= 500) { cout << "D";  eng = eng - 500; }
  36.            if (eng >= 400) { cout << "CD"; eng = eng - 400; }
  37.            if (eng >= 100) { repeat('C', eng/100);  eng=(eng-(eng/100)*100); }
  38.            if (eng >  90)  { cout << "IX"; eng = eng - 90;  }
  39.            if (eng >= 50)  { cout << "L";  eng = eng - 50;  }
  40.            if (eng >= 40)  { cout << "XL"; eng = eng - 40;  }
  41.            if (eng >= 10)  { repeat('X', eng/10); eng=(eng-(eng/10)*10); }
  42.            if (eng == 9)   { cout << "IX"; eng = eng - 9;   }
  43.            if (eng >= 5)   { cout << "V";  eng = eng - 5;   }
  44.            if (eng >= 4)   { cout << "IV"; eng = eng - 4;   }
  45.            if (eng >= 1)   { repeat('I', eng); }
  46.  
  47.            cout << endl << endl << "Enter another number (Y/N)? ";
  48.            cin >> finished;
  49.            if (finished == 'n' || finished == 'N') done = true;
  50.         } // end while
  51.      } // end main
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Copyright 1998,Jeremy Petter. All rights reserved worldwide. The Source shall not be liable in the event of incidental or consequential
  59. damages arising from the use of information supplied herein. 
  60.