تبلیغات
دانشجویان نرم افزار کل ایران - تابع تبدیل عدد به حروف
 
درباره وبلاگ




مدیر وبلاگ : بهرام محمدپور
نویسندگان
آمار وبلاگ
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :
دانشجویان نرم افزار کل ایران
صفحه نخست             تماس با مدیر           پست الکترونیک               RSS                  ATOM
یکشنبه بیست و سوم خرداد 1389 :: نویسنده : بهرام محمدپور
.

درقسمت  implementation تابع زیر را بنویسید:

const

yekan : array[0..9] of string = ('صفر','یک','دو','سه','چهار','پنج','شش','هفت','هشت','نه');

dahgan : array[0..9] of string = ('','','بیست','سی','چهل','پنجاه','شصت','هفتاد','هشتاد','نود');

dahyek : array[10..19] of string = ('ده','یازده','دوازده','سیزده','چهارده','پانزده','شانزده','هفده','هجده','نوزده');

sadgan : array[0..9] of string = ('','یکصد','دویست','سیصد','چهارصد','پانصد','ششصد','هفتصد','هشتصد','نهصد');

base : array[0..4] of string = ('','هزار','میلیون','میلیارد','تریلیون');

 

// تابع تبدیل عدد به حروف

function number_to_word(snum : string) : string;

// تابع تبدیل عدد سه رقمی به حروف

function getnum3(num3 : integer) : string;

var

s : string;

d1, d2, d3, d12 : integer;

begin

d12 := num3 mod 100; // دو رقم اول

d3 := num3 div 100; // صدگان

if d3 <> 0 then

s := sadgan[d3] + ' و ';

// نام گذاری اعداد 10 تا 19 در بین

// اعداد دو رقمی استثنا است

if (d12 >= 10) and (d12 <= 19) then

begin

s := s + dahyek[d12];

end

else

begin

d2 := d12 div 10; // دهگان

if d2 <> 0 then

s := s + dahgan[d2] + ' و ';

d1 := d12 mod 10; // یکان

if d1 <> 0 then

s := s + yekan[d1] + ' و ';

// حذف حرف <و> اضافی

s := copy(s, 1, length(s) - 3);

end;

getnum3 := s;

end;

 

var

L, i, b : integer;

stotal : string;

begin

// اگر عدد صفر بود، یکراست نتیجه را برگردان

if snum = '0' then

result := yekan[0]

else

begin

// برای اینکه بتوان عدد را به قسمت های سه رقمی تقسیم کرد

// به سمت چپ عدد، به اندازه کافی صفر می افزاییم

for i := Length(snum) to ((Length(snum) - 1) div 3 + 1) * 3 - 1 do

snum := '0' + snum;

 

L := Length(snum) div 3 - 1; // تعداد قسمت های سه رقمی منهای یک

 

// سه رقم سه رقم حلقه را تکرار کن

// از چپ به راست

for i := 0 to L do

begin

// به دست آوردن سه رقم مورد نظر

b := strtoint(copy(snum ,i * 3 + 1, 3));

// اگر سه رقم به دست آمده صفر باشد، در نام عدد تاثیری ندارد

// نام قسمت سه رقمی را بدست می آوریمgetnum3 با استفاده از تابع

// پسوند را به آن اضافه می کنیمbase با استفاده از آرایه

if b <> 0 then

stotal := stotal + getnum3(b) + ' ' + base[L - i] + ' و ';

end;

// حذف حرف <و> اضافی

stotal := copy(stotal, 1, length(stotal) - 3);

result := stotal;

end;

end;

مثال با دو عنصر   Edit و یک  Button

procedure TForm1.Button1Click(Sender: TObject);

begin

if Edit2.Text=''then

begin

Edit1.Text:='0';

end;

Edit1.Text:= number_to_word(Edit2.Text);

end;

 

موفق وسربلند باشید .   با نظرات خود ما را یاری کنید

*********************************************************************





نوع مطلب : سورس دلفی، 
برچسب ها :
لینک های مرتبط :


 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر