سلام دوستان
من تو قسمتی از یه برنامه می خوام عددی رو که از کاربر گرفته شده به صورت حروفی چاپ کنم. خودم هر چی فکر می کنم نمی دونم چه جوری باید این کارو بکنم. می شه اگه چیزی به ذهنتون می رسه یه ذره راهنماییم کنید.( در ضمن تو ++c )
سلام دوستان
من تو قسمتی از یه برنامه می خوام عددی رو که از کاربر گرفته شده به صورت حروفی چاپ کنم. خودم هر چی فکر می کنم نمی دونم چه جوری باید این کارو بکنم. می شه اگه چیزی به ذهنتون می رسه یه ذره راهنماییم کنید.( در ضمن تو ++c )
3561 رو در نظ بگیرید
حالا از راست جلو برید. تو اولین گام دو تا رقم بردارید: 61 و بنویسید shasto yek
حالا به ترتیب جلو برید (توجه کنید باید شمارۀ رقم رو داشته باشید. مثلاً 5 توی مکان سومه پس صدگانه)
بنویسید: Punsad o
بعد برین دو رقم بعدی: 03 در هزارگان. میشه Se Hezaro
توجه کنید که باید سه رقم یه بار دو تایی بخونیم. چون مثلاً اگه 17 بود و ما یکی یکی می خوندیم اشتباه می شد.
13514
chardah
punsad o
sizdah hezar o
باید برای هر index رقم یک تابع جداگانه بنویسید (احتمال زیاد توی صورت مسئله قید شده که طول عدد محدوده)
سلام...
بزار حرفهای حمید رضا رو کامل تر کنم...
ابتدا عددت رو به رشته تبدیل کن (تا بتونی بفهمی هر عدد تو چه مرتبه ای هست)
بعد یه حداکثری واسه عددت تعیین کن... (مثلا بگو تا صدگان..)
بعد باید عدد حروفی رو برای هر مرتبه تعیین کنی ... مثلا
همین جوری با استفاده از enum دهگان و یکان رو تعریف کن...کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بعد از سمت راست با استفاده از عدد مربوطه و مرتبه آن ، از مرتبه مورد نظر که با استفاده از enum تعریف شد عدد حروفی مربوطه رو بنویس...
تو یه حلقه این کار رو بکن و آخر حلقه یه 'O' یعنی حرف 'و' بزار اگر به یکان نرسیدی... اگه یکان بود به اون نیازی نیست...
بازم اگه تو کدش مشکل داشتی بگو..
موفق باشی
خیلی ممنونم از راهنماییاتون،
ببیید من باید بزرگ ترین عددم 8 رقم باشه و عدد رو از کاربر بگیرم و بعد حروفیش کنم. با توجه به توضیحاتتون باید اول یه آرایه داشته باشم که اعداد 1 تا 9 رو حروفی توش ذخیره کنم و بعد یه آرایه که اعداد 11 تا 19 رو و بعد یه آرایه که اعداد 10 تا 90 رو و یه آرایه که اعداد 100 تا 900 رو و به همین ترتیب.
بعد مثلا اگه کاربر وارد کرد 9876 چون عدد 4 رقمیه اول باید تقسیمش کنم به 1000 که خارج قسمت بشه 9 و بنویسم 9 به همرا یه دونه هزار و یه دونه O و بعد باقیمانده رو به 100 تقسیم کنم که بشه 8 و به همراه یه دونه صد و یه دونه O بنویسمش و به همین ترتیب.
ولی اولا عدد که همیشه چهار رقمی نیست که من اول به 1000 و بعد به 100 و ... تقسیمش کنم. ثانیا هم وقتی حاصل تقسیم اول شد 9 من چه حوری باید بفهمم که الان باید عضو نهم از آرایه ای که اعداد تک رقمی توش ذخیره شدن رو باید استفاده کنم؟ و یا ترتیب گذاشتن این هزار و صد و اینا به صورت حروفی رو باید از کجا بفهمم؟
بازم ممنونم که کمکم می کنید.
سلام...نوشته شده توسط mbsh [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
خواهش میکنم...
گفتی بزرگترین عددت 8 رقمیه پس در نتیجه کوچکتر از اون هم می تونه باشه، برای اینکه بفهمی عددت چند رقمیه باید
از این فرمول استفاده کنی >> 1+[ Log l n l ]
بعد که فهمیدی عددت چند رقمیه اون رو تقسیم بر ( 1- تعداد ارقام ) ^ 10 =L میکنی رقم اول از سمت راست رو بدست میاری و با توجه به اینکه الان رو کدوم مرتبه داری کار میکنی ( از طریق L جاری ) و رقم بدست اومده (از طریق تقسیم عددت بر L ) به آرایه ای از رشته ها که اعداد اون مرتبه رو ذخیره کردی (یا با استفاده از enum ) حروف عدد مربوطه رو مینویسی ... بعد یه "O" میزاری به شرط اینکه L=!1 باشه... بعد L=L/10 ... کلا این کارو تو یه حلقه میکنی...
Last edited by DAN271; 15-07-2007 at 19:55.
در ضمن همون طور که گفتم شما باید عدد حروفی هر مرتبه رو ذخیره کنی یا با استفاده از enum یا با استفاده از آرایه ای از رشته ها...
به این صورت که... برای یکان (از یک تا نه) برای دهگان ( ده ، بیست ، سی ،... ،نود) تا مرتبه 8
سلام و تشکر دوباره
شرمنده من یه مقدار آی کیوم پایینه.
ببینید من این جوری نوشتم:(البته بعضی رخط ها ربطی به حروفی کردن نداره.)کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ولی خوب متوجه نشدم. مثلا عدد من هست 56789 و من به دست آوردم که 5 رقمه و حالا اونو تقسیم کردم بر 10 به توان 4 که شده 5 ولی این که الان چه جوری باید بفهمم باید بنویسم پنجاه و بعد O (از طریق l جاری که شما گفتید رو نفهمیدم.میشه این قسمتو یه مقدار بیشتر توضیح بدید.
سلام و خسته نباشید...
ببخشید که حرفام رو توضیحی مینویسم ، واسه همینه شما سخت متوجه شدید... آخه دوست داشتم کدش رو شما بنویسد ، حالا اونجایی که شما متوجه نشدید یا اصلاحیه ی کدی که نوشتید رو کد میکنم...
اولا آرایه ای از اشاره گرها یاید نوشته بشه بدین صورت :
به همین صورت تا هر مرتبه ای که حداکثر شماست...کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا پارت اصلی برنامه ...
بازم شما trace ش کن ، اگه سوال یا مشکلی بود بپرس...کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشی
(خیلی سعی کردم ماژولار باشه... ولی تو پست بهم میریزه... ببخشید)
Last edited by DAN271; 16-07-2007 at 16:49.
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته این برنامه واسه 11 تا 19 مشکل داره که قبل Swich میتونی یه if بزاری ، خیلی راحت حل میشه... اگه نتونستی بگو بنویسم واست
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)