المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : رومنة الأرقام


ثامر أبو بلقيس
13-07-2013, 03:30 AM
السلام عليكم ورحمة الله
رمضان كريم إخواني
كما تعرف أخي الكريم أن الايكسل يستطيع تحويل الأرقام الرومانية إلى عادية
بصفة محدودة لا تتجاوز العدد 4999 ويعتمد في هذا التحويل على الدالة
=ROMAN(C6)
حيث C6 تمثل الخلية التي سنكتب فيها أرقاما عادية ومن ثمة تتحول إلى رومانية
لكن لا توجد دالة تقوم بالعكس أي تحول من الروماني إلى العادي في الايكسل
أما في الاوتوبلاي فبمجرد أن نضع الكود التالي في Global function
function ToNumeral( roman )
local Num = { ["M"] = 1000, ["D"] = 500, ["C"] = 100, ["L"] = 50, ["X"] = 10, ["V"] = 5, ["I"] = 1 }
local numeral = 0

local i = 1
local strlen = string.len(roman)
while i < strlen do
local z1, z2 = Num[ string.sub(roman,i,i) ], Num[ string.sub(roman,i+1,i+1) ]
if z1 < z2 then
numeral = numeral + ( z2 - z1 )
i = i + 2
else
numeral = numeral + z1
i = i + 1
end
end

if i <= strlen then numeral = numeral + Num[ string.sub(roman,i,i) ] end

return numeral
end

ثم نضع أنبوت 1 وزر نضع فيه الكود التالي :
X = Input.GetText("Input1");

result = Dialog.Message("Notice", ToNumeral( X ));


نستطيع القيام بما لم يقوم به الايكسل و هو التحويل من الروماني إلى الرقم العادي

سؤالي :
ما الطريقة في الاوتوبلاي للقيام بالعكس أي التحويل من الأرقام العادية إلى رومانية

تقديري:abc_022: