عملیات روی اعداد خیلی خیلی بزرگ در ساختمان داده (سی پلاس پلاس)

mahtab2009

Member
سلام
من یه برنامه برای انجام عملیات مختلف روی اعداد خیلی بزرگ نوشتم، مثل ضرب و جمع و تفریق و تقسیم، تشخیص اول بودن، محاسبه ب م م و توان.
البته هنوز مواردی که به تابع تقسیم نیاز دارن نوشته نشده چون با خود تقسیم مشکل دارم.
برنامه با لیست پیوندی ساده (یک طرفه) هست، به این صورت که هر رقم از عدد تشکیل یک گره میدهد. برای تقسیم طبق چیزی که دوران ابتدایی یاد گرفتیم ابتدا به تعداد ارقام مقسوم علیه از مقسوم جدا می کنم و مثلا اگه قراره 10 رقم جدا بشه این 10 تا رو توی یه string و 10 تای مقسوم علیه رو توی یه string دیگه میریزم و توسط تابع compare اونا رو مقایسه می کنم که اگه 10 تای مقسوم کوچکتره و لازم باشه یه رقم دیگه به مقسوم اضافه کنم. حالا تعداد ارقام مشخص شده ولی نمیدونم بعدش چیکار کنم؟؟؟
چه جوری بگم چه عددی بین 1 تا 9 رو به عنوان خارج قسمت انتخاب کنه و عمل ضرب رو انجام بده؟
یه مشکل دیگه هم دارم. برای تابع توان و تشخیص اول بودن باید از حلقه for استفاده کرد. اگه قرار باشه با اعداد بزرگ کار کنیم و هر رقم هم جدا توی یه گره باشه چه مدلی واسه حلقه شرط بذارم؟ بگم اندیسم تا کجا پیش بره؟؟
ممنون میشم راهنماییم کنید.
 

the_king

مدیرکل انجمن
سلام مجدد
فهمیدم برای تقسیم چیکار کنم فقط لطف کنین برای حلقه for راهنماییم کنین.
متشکرم.

اگر همه محاسبات رو بر اساس لیست پیوندی انجام می دهید بجای حلقه for از do while استفاده کنید.
توان و تشخیص اول بودن رو از ترکیب چند عمل دیگه خواهید ساخت. برای تشخیص اول بودن عدد باید
بتوانید باقیمانده تقسیم رو بدست بیاورید.

باقیمانده تقسیم a بر b، مقدار b بزرگتر از 0 است.
مرحله 1) مقدار a را در c به عنوان باقیمانده تقسیم قرار دهید.
مرحله 2) اگر c از b کوچکتر است به مرحله 4 بروید.
مرحله 3) از c به مقدار b کسر کنید و به مرحله 2 بازگردید.
مرحله 4) پایان، باقیمانده تقسیم در c قرار دارد.

فرضا a به توان b ،مقدار b عددی صحیح و غیر منفی است
مرحله 1) عدد 1 رو با همون شیوه ای که بکار برده اید بصورت لیست پیوندی ذخیره می کنید، فرضا به عنوان c
مرحله 2) اگر عدد b برابر 0 بود به مرحله 5 می روید.
مرحله 3) عدد a را در c ضرب می کنید و نتیجه در همان c ذخیره خواهد شد.
مرحله 4) مقدار b را یک واحد کمتر کرده و به مرحله 2 باز می گردید.
مرحله 5) پایان، حاصل توان در c قرار دارد.
 

جدیدترین ارسال ها

بالا