Mega Code Archive

 
Categories / Delphi / Algorithm Math
 

36 basamağa kadar bir sayının okunuşu döndüren 20 satırlık bir fonksiyon

function SayiOku(Sayi:String; Bosluk:Boolean=False):String; // Bu fonksiyon -fatihçopur- tarafından yazılmıştır (Made in Turkiye) // girilen 36 basamaklı sayının okunuşunu döndürür var Basamak:Array[0..2] of Byte; i,j:Byte; BoslukStr,Birler,Yuzler,Boluk,UBSayi,UBSayiOkunusu:String; Begin if Bosluk then BoslukStr:=' ' else BoslukStr:=''; Birler := ' bir iki üç dört beş altı yedi sekizdokuz'; Sayi := Stringofchar('0',36 - Length(Sayi)) + Sayi; for i := 0 to 11 do begin UBSayi := copy(Sayi, 3 * i + 1, 3); UBSayiOkunusu := ''; if ((i <> 10) or (UBSayi <> '001')) and (UBSayi <> '000') then begin for j := 0 to 2 do Basamak[j] := strtoint(copy(UBSayi, j + 1, 1)); Yuzler := ''; if Basamak[0] = 1 then Yuzler := BoslukStr + 'yüz' else if Basamak[0] > 1 then Yuzler := Trimright(BoslukStr + copy(Birler, 5 * Basamak[0] + 1, 5)) + BoslukStr + 'yüz'; UBSayiOkunusu := Yuzler + Trimright(BoslukStr + copy(' on yirmi otuz kırk elli altmışyetmişseksendoksan', 6 * Basamak[1] + 1, 6)) + Trimright(BoslukStr + copy(Birler, 5 * Basamak[2] + 1, 5)); end; if UBSayi = '000' then Boluk := '' else Boluk := TrimRight(BoslukStr + copy('desilyon nonilyon oktilyon septilyon sekstilyonkentilyon katrilyon trilyon milyar milyon bin ', 10 * i + 1, 10)); // sekstilyon yerine hekstilyon da kullanılabilir. result := Trimleft(result + UBSayiOkunusu + Boluk); end; end;