PDA

View Full Version : مبتدی: تقسیم اعداد خیلی بزرگ (200 رقم) - فوری



bluesky63
پنج شنبه 20 خرداد 1389, 20:39 عصر
سلام
می خواستم تقسیم دو عدد خیلی بزرگ ( 200 رقمی) رو انجام بدم (بدون استفاده از نوع BigInteger ، یا الگوریتم های درس طراحی الگوریتم) ، مثلا با تفریق های متوالی ،
ممنون می شم راهنمایی کنین.

cardano7
پنج شنبه 20 خرداد 1389, 23:37 عصر
سلام
می خواستم تقسیم دو عدد خیلی بزرگ ( 200 رقمی) رو انجام بدم (بدون استفاده از نوع BigInteger ، یا الگوریتم های درس طراحی الگوریتم) ، مثلا با تفریق های متوالی ،
ممنون می شم راهنمایی کنین.

سلام
تکلیف درسیه؟

bluesky63
جمعه 21 خرداد 1389, 09:58 صبح
پروژه درس c# ، خودم با تفریق متوالی انجام دادم ولی تا 7،8 رقم جواب می ده . (عدد رو به صورت رشته می گیره بعد به صورت آرایه int ذخیره می کنه ، دو عدد را تو یک حلقه آن قدر از هم کم تا صفر بشه یا باقی مانده کوچکتر، تعداد مراحل خارج قسمت می شه) ، آیا راه حل بهتری می دونین ، می تونین کمک کنین؟ یا همین روش و اصلاح کنین؟
فایل برنامه را هم گذاشتم.

zayens
جمعه 21 خرداد 1389, 13:51 عصر
این تقسیم با int و حتی با Long int همون طور که گفتی تا چند رقم امکان پذیر نیست
برای اینجور کار ها باید از آرایه استفاده کنی

Mohandes2009
جمعه 21 خرداد 1389, 16:33 عصر
آرایه که خودمم بلد بودم یه چیز دیگه بگید!!

zayens
جمعه 21 خرداد 1389, 17:10 عصر
آرایه که خودمم بلد بودم یه چیز دیگه بگید!!
شما تا 200 رقم می خواین منم گفتم آرایه
چند تا چیز می خوای؟

hbahjat
جمعه 21 خرداد 1389, 19:47 عصر
شما تا 200 رقم می خواین منم گفتم آرایه
چند تا چیز می خوای؟

با آرايه چطوري بايد برنامشو نوشت اگه ميشه كدشو بزارين

bluesky63
جمعه 21 خرداد 1389, 20:03 عصر
جناب zayens من هم این کار را با آرایه (تک تک ارقام را در آرایه ای از int گذاشتم) انجام دادم ، فقط مشکل اینجاست که از 7،8 رقم به بالا جواب سیستم خیلی طول می کشه یا هنگ می کنه، میشه بیشتر توضیح بدین یا نمونه کد بگذارین.

zayens
یک شنبه 23 خرداد 1389, 10:50 صبح
یه مثال برای جمع 2 عدد بسیار بزرگ

ابتدا عددها را درون string بریزید
*جمع 2 عدد 2 رقمی حداکثر 3 رقمی و جمع 2 عدد 4 رقمی حداکثر5 رقمی است
پس آرایه ای با طول string +1 ایجاد کنید با نام sum
حال بطول هر string یک آرایه با همان طول بسازید و هر عدد را درون بک خانه از آرایه قرار بدین
یادتون باشه که هر عدد را ()int.pars کنین و یک متغیر int نیز برای Carry Out بسازید.
مثلا ;int x=0
در این صورت 2 آرایه از نوع int برای محاسبه داریم که از خانه ی صفر پر شده اند

فرض کنین عدد زیر در اولین آرایه قرار گرفته:
|1|6|6|5|4|7|8|5|6|4|2|1|5|6|9|7|4|5|9|8|5|6|4|4|1 |2|5|6|2|1|4|
این هم عدد دوم
|3|6|5|4|1|2|9|8|7|4|5|8|5|4|1|2|3|6|9|8|5|4|7|5|1 |2|5|6|3|2|1|

خوب حالا از آخرین آرایه شروع میکنیم.
3+1=4 در انتها 4 را با x که صفر است جمع میکنیم
عدد 4 در آرایه ی sum قرار میگیره. در آرایه ی صفرم.
در انتها کل آرایه را invers میکنیم

برای قسمت دوم 6+6=12
عدد را جدا کنین و 2 را به آرایه ی بعدی sum بفرستین و 1 را در x بگذارید
یه if بذارید که اگر عدد (در اینجا12) 2 رقمی بود x را مساوی عدد دهگان قرار بده.
در هر محاسبه دوباره x را صفر کنین
والی آخر
به همین راحتی می تونین سایر محاسبات را انجام بدین

hamid.shekasteh
دوشنبه 24 خرداد 1389, 08:16 صبح
اینو من چند سال پیش با پاسکال نوشتم
جمع و منها و ضرب و تقسیم اعداد بزرگ با آرایه ، احتمالا پاسکال رو بلدین

mohammad meta
دوشنبه 24 خرداد 1389, 11:39 صبح
شما فقط کافی طرز تقسیم را در دبستان به یاد آورید بعد بوسیله آرایه ای از string دو عدد را بخوانید
مثلا اگر بخواهیم 1250 را به 5 تقسیم کنیم از آرایه اول 2 رقم سمت راست را جدا کرده و سپس آن را به 5 تقسیم کرده و باقیمانده را به جای 12 در آرایه اول قرار میدهیم و این کار همین شکل ادامه پیدا می کند تا عدد آرایه اول کوچکتر از عدد آرایه دوم شود . به همین سادگی .
اگه بازم متوجه نشدی یک بار عمل تقسیم را به روش دبستان انجام بده متوجه می شی