PDA

View Full Version : سوال: تبديل عدد به حروف به صورت بازگشتي



navid heidarpour
سه شنبه 08 بهمن 1387, 05:09 صبح
با سلام
براي تبديل عدد به حروف به صورت بازگشتي
اگه دارين ممنون ميشم . :افسرده:

nilofarr
چهارشنبه 28 خرداد 1393, 00:06 صبح
سلام
اين برنامه اي كه شما ميخواهيد قابليت بازگشتي ندارد

aliagamon
چهارشنبه 28 خرداد 1393, 01:15 صبح
بازگشتی داره .... اینطوری که شما یه مثلا لیست یا Dictionary تعریف میکنید بعد عدد رو میگیرین برای مثال ورودی اینه : 563
حالا تو تابع باید این کارو بکنی عدد رو بگیره رقم سمت چپ رو + طول رقم - یک تا صفر کنه یعنی 563 بگیره بشه 500 حالا 500 رو از تو دیکشنری پیدا کنه بنویسه و یه و اضافه کنه جلوش (یعنی مینویسه "پانصد و") حالا عدد اصلی رو ازش عدد بالا رو کم کنه یعنی 563-500=63 دوباره اینو return کنه به خودش ...
حالا دوباره همون تابع میاد 6 رو میگیره و یه صفر کنارش بیزاره میشه 60 و اونو از دیکشنری پیدا میکنه مینویسه (نتیجه میشه "پانصد و شصت و")
حالا 63-60 = 3 رو return میکنه ...
دوباره تابع 3 رو میگیره و 0 عدد 0 اضافه میکنه میشه 3 و اونو پیدا میکنه و مینویسه و میشه (پانصد و شصت و سه و)
خب حالا دوتا مشکل هست یکی اینکه یه واو اضافه میاد یکی هم اینکه الان 0 رو برمیگردونه ... دوباره برنامه 0 رو میگرده پیدا کنه ...
برای اصلاج این مشکل باید تیکه اخر رو شرطی کنید یعنی اگر عدد اصلی - عدد ما = 0 (یعنی اخرین عدد) بدونه و اخر بنویسش و اینکه Return خالی کنه (بازگشتی نه مثلا 0 )وگرنه همون کار های بالا (و بنویسه و بازگشتی return کنه )

محمد آشتیانی
چهارشنبه 28 خرداد 1393, 04:09 صبح
سلام
دوست عزیزم aliagamon ، به نظرم این برنامه رو واقعا نمیشه به صورت بازگشتی نوشت، این راهی که شما فرمودید فقط باعث میشه ظاهر راه حل شما شبیه به یه تابع بازگشتی بشه و البته پر از استثنا که باید کنترل بشن.
بر اساس فرمایش شما ، نقطه برگشت برای تابع اینه که عدد ورودی یک رقمی باشه (یعنی یکان) درسته؟
خب حالا شما اون عدد یک رقمی رو بر اساس دیکشنری تبدیل به حروف میکنی و نتیجه رو برمیگردونی به مرحله قبلی و الی آخر تا نتیجه نهایی به دست بیاد
بله درسته این روش کاملا با عددی که شما مثال زدین درسته و کار میکنه ، اما با اعدادی مثل 110 - 111 - 112 و ... که از این قاعده پیروی نمیکنن چه می کنید؟
(منظور اینه که 11 تو تلفظ به صورت 1 + 10 که شما فرمودید خونده نمیشه و همینطور مثال های دیگه که عرض کردم)
اینو میدونم که به هر حال میشه با کلی مکافات این استثناها رو کنترل کرد اما معقول نیست ، تازه اعداد بزرگتر هم هستن که ایجاد مشکل میکنن.



البته این تاپیک خیلی قدیمیه / من به تاریخ اولیه دقت نکردم


موفق باشید.

a_mohammadi_m
سه شنبه 10 تیر 1393, 13:09 عصر
سلام
طبق الگوریتمهای موجود تقریبا میشه گفت وقتی 3 رقم 3 رقم پردازش میشه تا حدی بازگشتی داره کار می کنه دیگه