C/C++ FAQ

Konwersja liczb arabskich na rzymskie

brodny
#include <string>
#include <iostream>
// ...
 
std::string DecToRoman(long int Decimal)
{
   const long int Numbers[13] = { 1, 4, 5, 9, 10, 40, 50, 90, 100,
      400, 500, 900, 1000 };
   const std::string Romans[13] = { "I", "IV", "V", "IX", "X", "XL",
      "L", "XC", "C", "CD", "D", "CM", "M" };
   std::string Result = "";
   for (int i = 12; i >= 0; --i)
   {
      while (Decimal >= Numbers[i])
      {
         Decimal -= Numbers[i];
         Result += Romans[i];
      }
   }
   return Result;
}

Przykład użycia:

// ...
long int nLiczba;
std::cin >> nLiczba;
std::cout << std::endl << DecToRoman(nLiczba);
// ...

Przetłumaczone na C++ na podstawie kodu bełdzia (http://4programmers.net/faq.php?id=792).

FAQ

6 komentarzy

Nie mam czasu szukać.. jak znajdziesz, to popraw z łaski swojej.

Jeszcze link jest dziurawy, wypadałoby poprawić... :>

Jak rzekłem, tak się stało - powróciłem z < na <

Thx Marooned - nie piszę tak często artykułów, żeby o tym pamiętać :)

To błąd obecnej wersji Coyote - ucina zawartość < :/
Poprawiłem na &lt;

To wszystko zostanie poprawione jak wejdzie GeSHi - jednak teraz nie mam czasu na Coyote :/

#include ... ? :>
Moze #include <iostream> ?:>