TECHNOTUX

لینوکس و برنامه نویسی - محدودیت اعداد در c++

Anonymous - پنجشنبه، ۰۵ دی ۱۳۸۷
ارسال موضوع: محدودیت اعداد در c++
من می خوام اعدادی را در c++ ذخیره کنم که مقدارشون بیشتر از مقدار مجاز هست. چه طور میتونم این کار را بکنم.

من خیلی c++ بلد نیستم.
با آرایه ها می تونم.؟( اعداد اعشاری هستند.)
farhadnia - پنجشنبه، ۰۵ دی ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
برای اعداد خیلی بزرگ باید از آرایه استفاده کنی و یه کلاس جدید برای کار با اون بنویسی البته قبلا دیگران نوشتن و فقط باید رو نت یه سرچ بزنی اگه اشتباه نکنم توی کتاب طراحی الگوریتم نیپولیتان - نعیمی پور فصل دوم یه مبحث کامل در مورد کار بر روی اعداد بزرگ و همینطور عملگر های مربوط به اونا رو داره زمان دانشجویی اون الگوریتم ها رو پیاده کردن اگه پیداشون کردم برات اینجا می زارم برشون داری ولی یادمه زیاد کار سختی نبود خصوصا برای جمع و تفریقشون یه مقدار فقط تقسیم اذیت می کنه...
Anonymous - جمعه، ۰۶ دی ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
میشه بیشتر توضیح بدید. من چیزی از کلاس نمی دونم . همین طور میشه بگید.
farhadnia - جمعه، ۰۶ دی ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
ببین برای شروع الگوریتم جمع دو عدد که خیلی سادست رو بنویس چطوری اینطوری که می گم:
دو آرایه داری که عدد اول و عدد دوم توش ذخیره شده حالا تو می خوای حاصل جمع این دو عدد رو بدست بیاری الگوریتم جمع اعداد می گه که اگه حاصل جمع دو رقم کوچکتر از مبنای عدد شد که هیچ در غیر این صورت یک واحد به رقم مابعد اضافه می شه یعنی در مبنای 10 اگه داشتی 5 +4 = 9 که هیچ ولی اگه داشتی 6+7=13 عدد 3 رو در خانه متناظر در آرایه حاصل جمع می ریزی و یک عدد یک با خانه بعدی جمع می زنی:
5| 6| 2|3 |4 |7 |1 |0 |0
2 |5|1 |2 |5 |2 |0 |0 |0
----------------------------
7 |1|4 | ....

امیدوارم متوجه شده باشی با یک حلقه for راحت نوشته میشه...
در مثال زیر عدد اول در آرایه x و عدد دوم در آرایه y و حاصل جمع در آرایه z ذخیره شده



کد:

carry=0;
for(i=n;i>=0;i--){
   temp=x[i]+y[i]+carry;
   if(temp>10){
      z[i]=temp%10;
      carry=1;
   }
   else{
      z[i]=temp;
      carry=0;
}

Anonymous - شنبه، ۰۷ دی ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
اين را من متوجه نشدم كه چه طور مي تونم يه عدد اعشاري مثل .00000000000000000000000000000000000007 را زخيره كنم

من مي خوام ضربشون كنم.
Anonymous - شنبه، ۰۷ دی ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
اين را من متوجه نشدم كه چه طور مي تونم يه عدد اعشاري مثل .00000000000000000000000000000000000007 را زخيره كنم

من مي خوام ضربشون كنم.
Anonymous - شنبه، ۰۷ دی ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
منظورم عددي هست كه تو flot يا چيز ديگه جا نشه.
ahmad598 - یكشنبه، ۰۸ دی ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
فرقی نداره، اگر بتونید الگوریتم لازم برای ذخیره سازی اعداد صحیح (یا طبیعی) رو بنویسید، می تونید خیلی راحت اون رو به اعداد اعشاری هم تعمیم بدید. مثلا یه تعمیمی که به ذهن من می رسه اینه: اگر توی یه خونه از آرایه مقدار -1 قرار گرفته بود، یعنی در این مرنبه ممیز داریم. مثلا آرایه :
کد:
1
4
0
-1
0
8

برابره با عدد 140.08
خود متغیر نوع float هم تا اون جایی که من می دونم از یه ایده شبیه به همین استفاده می کنه.
farhadnia - یكشنبه، ۰۸ دی ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
نقل:
خود متغیر نوع float هم تا اون جایی که من می دونم از یه ایده شبیه به همین استفاده می کنه.

این جمله درست نیست...
در کامپیوتر اعداد اعشاری به فرم علمی ذخیره میشن یعنی فقط توان و مانتیس اعداد نگهداری میشه مثلا برای عدد 123.12369- عدد 3+ بعنوان توان و عدد 12312369- هم به عنوان مانتیس ذخیره میشه پایه هم که معلومه در اینجا پایه 10 هستش ولی برای محاسبات درون پردازنده پایه می تواند 2 یا 16 باشد...
برای محاسبات و این نوع نگهداری اعداد اعشاری در کامپیوتر می باشد البته استاندارد هایی برای این مورد وجود دارد مثل IEEE754 البته این استاندارد ها در جزئیات با هم اختلاف دارن و کلیت موضوع همینه یعنی ما فقط مانتیس و نما رو برای اعداد اعشاری ذخیره می کنیم این ادرس هم بد نیست نگاه کنی...
http://steve.hollasch.net/cgindex/coding/ieeefloat.html
برای ضرب اعداد اعشاری بزرگ هم الگوریتم های مختلفی وجود داره شما باید برای کار با اعداد خیلی بزرگ ابتدا الگوریتم جمع و تفریق رو بنویسی و بعد با استفاده از این دو الگوریتم عملیات ضرب و تقسیم رو هم شبیه سازی کنی البته با یه جستجو در اینترنت می تونی الگوریتم های فوقالعاده سریعی پیدا کنی که کف برت می کنه...
Anonymous - سه شنبه، ۱۰ دی ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
من نمیدونم تو گوگل باید چی جست وجو کنم تا نتیجه درست را بده.
Anonymous - پنجشنبه، ۱۲ دی ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
کسی سورس این را نداره این جا بزاره . واجبه.
kakilik - یكشنبه، ۲۰ بهمن ۱۳۸۷
ارسال موضوع: پاسخ: محدودیت اعداد در c++
http://gmplib.org
kakilik - جمعه، ۲۸ فروردین ۱۳۸۸
ارسال موضوع: پاسخ: محدودیت اعداد در c++
یکی از فصل‌های کتاب numerical recipes (قابل دانلود از www.nr.com) به این موضوع می‌پردازد و نحوه‌ی پیاده‌سازی چهار عمل اصلی روی آن را (که بسیار کارا و سریع باشد) شرح می‌دهد و در نهایت با یک برنامه عدد پی را تا چندهزار رقم حساب می‌کند.
تمام زمانها مطابق GMT + 4 ساعت هستند
PNphpBB2