PDA

View Full Version : سؤال



alaghemand
شنبه 18 اسفند 1386, 08:53 صبح
با سلام
1- فرمول تجزیه اعداد بزرگ بالای 100 رقمی یا حتی حدود 4096 بیتی در c# چگونه است؟
2- برای کار با اعداد بزرگ حدود 4096 بیتی چگونه از حافظه استفاده کنیم یعنی نحوه تعریف اعدادی که اندازه آنها از int,double,ulog,... بیشتر است چگونه می باشد؟

saeid.yavary
شنبه 18 اسفند 1386, 09:09 صبح
سلام
باید از رشته ها استفاده کنی

alaghemand
شنبه 18 اسفند 1386, 09:24 صبح
لطف بفرمایید بیشتر توضیح دهید

Ghasem Dehghani
شنبه 18 اسفند 1386, 09:59 صبح
باید اول یه تابع بنویسی که بتونه اعداد رو به صورت رشته ای بگیره و بعد هم بتونه دو عمل اصلی جمع و تفریق رو انجام بده و حاصل رو به صورت رشته ای بر گردونه مثلا :
بتونه رشته "11111111111111111111111" رو با "99999999999999999999999" جمع کنه و بعد جواب رو به صورت
"100000000000000000000000" بر گردونه شما با این کار میتونید تا n رقم بدون محدودیت از رشته ها برای جمع و تفریق استفاده کنید .
برای ضرب n*m هم داخل یک حلقه for باید n بار عدد m رو با خودش جمع کنی.
مثل 5*4 میشه 5+5+5+5 = 20

برای تقسیم هم تفریق متوالی تا باقی مانده صفر بشه .
برای جمع اعداد میتونی اول دو عدد رو از نظر طول با هم یکسان کنی مثلا اگر 123 باید با 25 جمع بشه بهتره اعداد ورودی رو به این صورت تبدیل کنی 123+025 و بعد هم کاراکتر به کاراکتر با هم جمع کن در این مثال 3+5 رو جمع کن داخل یک متغییر رشته ای بریز تا انتها ......
اگر رقم نقلی هم داشتی نگه دار با بعدی ها جمع کن .
--------------------------------
تا اینجا روش حل مسئله البته یکی از روشها بود .
اگر یک رقم n بیتی داشتی مثل "1111" که میشه 15 یعنی مرتبه مکانی هر کدوم رو در صورتی که یک باشه با هم جمع میکنیم مثل این :
1+2+4+8 =15
شما هم برای پیدا کردن مرتبه اعداد نجومی تر باید عدد 2 را به مقدار مرتبه مکانی در خودش ضرب کنی که چون شما به صورت رشته ای این کار رو انجام میدین مثلا برای عدد 1 واقع در ردیف 4 دست چپ برای مثال بالا به شکل زیر میشه :
1
1*2 =2 یا 2+0=2
2*2=4 یا 2+2 = 4
4*2=8 یا 4+4=8 (شبیه سازی ضرب با استفاده از تابع جمع رشته ها)
پس مرتبه مکانی عدد یک سمت چپ 8 است ، همین طور تا آخر مرتبه مکانی ها رو پیدا میکنی و باهم جمع میکنی تا میشه عدد مورد نظر شما .

موفق باشی !

Amir Oveisi
شنبه 18 اسفند 1386, 11:58 صبح
1- لطفا عنوان مناسب برای تاپیک استفاده کنید.
2- سوال شما بیشتر به بخش الگوریتم مربوط میشه تا اینجا

با طرح سوال باعنوان و در تاپیک مناسب زودتر به جوابتون می رسید.

موفق باشید