جدا کردن سه تایی اعداد و تبدیل اعداد به حروف
سلام ! من یه برنامه نویس فوق العاده مبتدی اندرویدم !
راستش من دارم یه اپیلیکشنی تقریبا شبیه مبدل واحد میسازم ( از نوع مالی البته )
میخواستم ببینم چجوری میشه اعداد رو تبدیل به حروف کرد ؟! مثلا 12800 تومان تبدیل بشه به دوازه هزار و هشتصد هزار تومان ... یا معکوس این قضیه .
واینکه عدد به دست اومده رو چجوری 3 تا 3 تا جداش کنم ؟ ( با کاما ) مثال : 1,900,100 ریال
باتشکر .
برای معادل سازی لازمه که یک ارایه دوبعدی در نظر بگیریم بعد اول عدد بعد دوم معادل فارسی
حالا ما به چند دسته از این ها نیاز داریم
اولا باید الگوریتمی بنویسید که سه رقم سه رقم جدا کنه
بعد یک همچین ارایه هایی نیاز داریم
۱:
(0, ''),(1, 'یک') ,(2, 'دو'),(3, 'سه') ,(4, 'چهار'),(5, 'پنج'),(6, 'شش'),(7, 'هفت'),(8, 'هشت')
,(9, 'نه'),(10, 'ده'),(11, 'یازده'),(12, 'دوازده'),(13, 'سیزده'),(14, 'چهارده') ,(15, 'پانزده'),(16, 'شانزده')
,(17, 'هفده'),(18, 'هجده'),(19, 'نوزده'),(20, 'بیست'),(30, 'سی'),(40, 'چهل'),(50, 'پنجاه'),(60, 'شصت'),(70, 'هفتاد'),(80, 'هشتاد'),(90, 'نود'),(100, 'صد')
,(200, 'دویست'),(300, 'سیصد'),(400, 'چهارصد'),(500, 'پانصد'),(600, 'ششصد'),(700, 'هفتصد'),(800, 'هشتصد'),(900, 'نهصد')
2:
(1, '') ,(2, 'هزار'),(3, 'میلیون'),(4, 'میلیارد'),(5, 'تریلیون')
,(6, 'کوادریلیون'),(7, 'کوینتیلیون'),(8, 'سیکستیلون'),(9, 'سپتیلیون'),(10, 'اکتیلیون'),(11, 'نونیلیون'),(12, 'دسیلیون')
,(13, 'آندسیلیون'),(14, 'دودسیلیون'),(15, 'تریدسیلیون'),(16, 'کواتردسیلیون'),(17, 'کویندسیلیون'),(18, 'سیکسدسیلیون'),(19, 'سپتندسیلیون'),(20, 'اکتودسیلیوم'),(21, 'نومدسیلیون')
3:
( 1 ,'دهم' ),(2 , 'صدم'),(3 , 'هزارم'),(4 , 'ده-هزارم'),(5 , 'صد-هزارم'),(6 , 'میلیونام')
,(7 , 'ده-میلیونام'),(8 , 'صد-میلیونام'),(9 , 'میلیاردم'),(10 , 'ده-میلیاردم')
اولی برای رقم یکان دهگان صدگان
دومی برای هزار ده هزار صدهزار میلیون ومیلیارد و...
سومی برای اعداد اعشاری
سه رقم سه رقم باید جدا کنید بعد معادلش رو بنویسید
فرضا اگر عدد ۱۲۳۴باشه
الگوریتمی باید بنویسید ک ابتدا سه رقم سه رقم جدا کنه بعد
و ما هر سه رقمی ک جدا میکند و تعداد باری ک سه رقم جدا میکند رو ما نیاز داریم
زمانی ک سه رقم جدا میکند رقم یکان رو باید از ارایه ی یک ها و رقم دهگان از دهگان و رقم صدگان از صدکان خوانده بشه
بعد باید یکها یا هزار ها یا میلیون هاش از ارایه ی بعدی انتخاب بشه و...
صورت سوال:
دو متغیر داریم به نام x=5 و y=9
قرار هست عملیات ریاضی روی اینها انجام بدیم و در متغیر z ذخیره کنیم
عملیات جمع ضرب و تفریق
جواب
یادت باشه در الگوریتم نویسی باید جزءی کار کنی یعنی هرچی در ذهنت هست رو پیاده کنی نه در ذهنت پیاده کنی و فقط نتیجه رو در معرض نمایش بدی
الان جواب این دورو حدس میزنی راحت و میگی یکبار جواب متغیر Z اگر جمع قرار باشه کنیم میشه 14 اگر ضرب میشه 45 تفریق
دو حالت هست یکبار 4 و یک بار منفی چهار ! این اشتباهه! چون باید عملی بنویسی هرکاری در ذهنت کردی ک به نتیجه رسیدی رو باید پیاده کنی و بنویسی
ابتدا تعریف دو متغیر ک از چه نوعی هستند صحیح هستن کاراکترن اعشاری هستن
بعد مقدار دهی اولیه کنی
بعد متغیر سوم رو ک نتیجه قراره داخلش قرار بگیره رو تعریف کنی
بعد حاصل اون دو متغیر رو حساب کرده و در متغیر z بگذاری بعد فرضا چاپ کنی و حتی از برنامه خارج بشی رو هم باید بنویسی!
int x=5
int y =9
int z
z=x+y
حالا این ساده بود! اگر برنامه بزرگ تر بود جزئیات بیشتری هم میداشت!
تصور کن میخوای سوار یک تاکسی بشی :)
شاید مسخره بنظر برسه اما جالبه
اول باید حاضر بشی! بعد باید چک کنی در جیب هات پول باشه و به مقدار کافی باشه و کلید خانه به همراهت باشه بعد
جلوی اینه مرتب کنی خودت رو و بعد بری کفش هات رو بپوشی و بعد در خانه را باز کنی بعد در خانه را ببندی و مطمئن بشی بستی! بعد بری سر خیابون بعد ومنتظر تاکسی بشی و بعد اگر تاکسی رو دیدی خودت رو اماده کنی ک بهش ادرس رو بگی! بعد ک رسید نزدیکت دستت رو بلند کنی به نشانه ی تاکسی خواستن و ادرس محلت رو بگی بعد دوراه پیش میاد تاکسی وای میسته یا نه! اگر واستاد چیکار کنی اگر نه چیکار! این میشه الگوریتم نویسی روش حل و ریز کردن جزئیات مرحله بعد الگوریتم نویسی بهینه کردنش هست یعنی اینکه ایا این راهی ک نوشتی بهترین و مختصر ترین و سریع ترینه؟
چون امکان داره راهی ک نوشته باشی کوتاه باشه ولی سریع نباشه! یا سریع باشه ولی کوتاه نباشه بعد باید بسنجی ک کدوم یکی مهم تره کوتاه بودن یا سریع بودن! مسئنله این هست :)
اینها گوشه ای از برنامه نویسی هست ک باید تمرین کنی و باتمرین بهش میرسی
static CharSequence setSemicolon(Integer sumpricestr) {
NumberFormat nf2 = NumberFormat.getInstance(Locale.ENGLISH);
((DecimalFormat) nf2).applyPattern("###,###");
String sumprice = nf2.format(sumpricestr);
String redSemicolon = sumprice.replace(",", "<font color=red>,</font>");
return Html.fromHtml(redSemicolon);
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .