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

Goroop.ir

Member
با سلام

من چند روزی هست که داخل این کار گیر کردم و هر چی به ذهنم رسید رو انجام دادم ولی خوب در نیامد

من میخام اعداد رو به جروف تبدیل کنم
مثلا شما قیمتتون رو در فیلد وارد کردید

به عنوان مثال : 1400
که باید به حروف تبدیل بشه : هزار و چهارصد

یا : 11
تبدیل : یازده

یا : 50000
تبدیل : پنجاه هزار

من با استفاده از ارایه این کار رو انجام دادم ولی جواب خوبی نداد
PHP:
$txt = $_POST['txt'];
$grade = array('100' => صد,
                       '200' => دویست,
                       '300' => سیصد,
                       '400' => چهارصد,
                       '500' => پانصد,
                       '600' => شش صد,
                       '700' => هفت صد,
                       '800' => هشت صد,
                       '900' => نه صد,
                       '1000' => هزار,
                       '1100' => هزار صد,
                       '1200' => هزار دویست,
                       '1300' => هزار سیصد,
                       '1400' => هزار چهارصد,
                       '1500' => هزار پانصد,
                       '1600' => هزار ششصد,
                       '1700' => هزار هفتصد,
                       '1800' => هزار هشتصد,
                       '1900' => هزار نه صد,
                       '2000' => دوهزار,
                       '2100' => دوهزار صد,
                       '2200' => دوهزار دویست,
                       '2300' => دوهزار سیصد);
echo "قیمت : $grade[$txt] تومان";

این راه رو هم انجام دادم که بدرد نمیخورد
PHP:
$r = array(1=>یک, دو, سه , چهار, پنج, شش, هفت, هشت, نه, ده);


ولی من یک راه خیلی خوب میخام

که اگر کاربر مقدار 11 رو وارد کرد برنامه این مقدار رو به حروف تبدیل کنه یازده یا اگر وارد کرد 500 تبدیل بشه به پانصد یا پانصدویک


ممنون میشم اگر کمک کنید
 

tabib_m

Member
1- تجزیه ی عدد به عددهای سه رقمی
2- ترجمه ی هر کدام از اعداد سه رقمی (که قسمت پیچیده ی کاره)
3- انداختن پسوند ته هر کدوم از ترجمه های اعداد سه رقمی
4- ترکیب نهایی اعداد.

در حقیقت شما باید یک تابع اصلی داشته باشی (که ورودیش همون عدد اصلی هست) و یک تابع هم که مخصوص ترجمه ی اعداد سه رقمی هست.

یک سری حالات خاص پیش میات که اعداد 10 تا 19 هستن. چون ترجمه ی خاص خودشون رو دارن.
یعنی اولین کاری که توی ترجمه باید بکنی اینه که ببینی عدد وارد شده, یکی از این اعداد هست یا نه. در صورتی که یکی از همین اعداد بود باید ترجمه ی خاص خودش رو برگردونی, در غیر این صورت باید مراحل ترجمه رو انجام بدی.

برای مثال:
ورودی: 11356

تبدیل میشه به دو قسمت:
الف) 11
وارد تابع دوم میشه, و چون یک حالت خاص هست, مستقیما مقدار «یازده» برگردونده میشه.

ب) 356
این هم وارد تابع دوم میشه
یکان, دهگان, و صدگان جدا میشن و عدد صدگان از آرایه ی پارامترهای صدتایی مشخص میشه: 3=> سیصد
حرف «و» میچسبه تهش
حالا دهگان هم همینطور مشخص میشه: 5 => پنجاه
حرف «و» میچسبه تهش
و حرف یکان هم مشخص میشه: 6=> شش
که در نهایت رشته ی «سیصد و پنجاه و شش» به خروجی فرستاده میشه

حالا از اونجایی که عدد 11 در مرحله ی دوم قرار داشت (دومین گروه سه تایی) باید عبارت «هزار» به تهش اضافه بشه, و بعد عدد 356 هم به تهش اضافه بشه که در نهایت نتیجه این میشه:
«یازده هزار و سیصد و پنجاه و شش»


امیدوارم متوجه قضیه شده باشی
اگر توی اینترنت بگردی, حتما نمونه های خوبی پیدا میکنی.
میتونی از نمونه های انگلیسیش هم تقلید کنی

موفق باشید.
 

Goroop.ir

Member
محسن جان من به خوبی متوجه منطق کارتون شدم ولی بلد نیستم بنویسمش

اگر میشه یک نمونه بزارید ممنون میشم نمونه های انگلیسیش هم باشه خوبه

فقط نمونه باشه



ممنون میشم
 

جدیدترین ارسال ها

بالا