Programowanie w języku C/C++ » FAQ

Konwersja liczb arabskich na rzymskie

  • 2006-01-16 23:04
  • 6 komentarzy
  • 2749 odsłon
  • Oceń ten tekst jako pierwszy
#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).

6 komentarzy

Marooned 2006-01-17 00:43

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

Patyk 2006-01-16 23:46

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

Marooned 2006-01-16 23:04

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

brodny 2005-08-27 12:15

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

Marooned 2005-08-26 20:44

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

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

migajek 2005-08-26 16:48

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