نمایش نتایج 1 تا 6 از 6

نام تاپیک: دریافت و عملیات روی اعداد بزرگ در ++C

  1. #1

    دریافت و عملیات روی اعداد بزرگ در ++C

    چطور می تونم در ++C دو عدد که حداکثر 40 رقم هستند را از ورودی بگیرم به طوریکه بتوانم روی این دو عدد4 عمل اصلی را انجام داد

  2. #2
    کاربر جدید آواتار mahan66
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    مشهد
    پست
    7
    باید از کلاس hugenumber استفاده کنی .. در واقع خودت باید با استفاده از لیست ها یا رشته ها چهر عمل دستی رو پیاده سازی کنی ..

  3. #3
    کاربر تازه وارد آواتار daneshjo IT
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    تهران
    پست
    55

    Smile

    سلام.
    من برنامه ی کاملی به زبان C++‎ داشتم. براتون به صورت یک فایل zip میگذارم.
    البته برنامه با class نوشته شده و من فایل های (.h,.cpp) را براتون گذاشتم.
    امیدوارم که مفید باشه؟
    فایل های ضمیمه فایل های ضمیمه

  4. #4

    Red face نقل قول: دریافت و عملیات روی اعداد بزرگ در ++C

    سلام من یه برنامه ساده تر می خوام با استفاده از کلاسها که دو تا عدد از ورودی بگیره و 4 عمل اصلی رو روش انجام بده
    این برنامه ای که گذاشته شده خیلی پیشرفته تره
    در ضمن اگه میشه یه توضیحی در مورد برنامه گذاشته شده بدید و چه جوری عمل کردن ؟Huge?

  5. #5
    کاربر جدید
    تاریخ عضویت
    آذر 1388
    محل زندگی
    esfahan
    پست
    1

    Exclamation نقل قول: دریافت و عملیات روی اعداد بزرگ در ++C

    نقل قول نوشته شده توسط daneshjo IT مشاهده تاپیک
    سلام.
    من برنامه ی کاملی به زبان C++‎‎ داشتم. براتون به صورت یک فایل zip میگذارم.
    البته برنامه با class نوشته شده و من فایل های (.h,.cpp) را براتون گذاشتم.
    امیدوارم که مفید باشه؟


    salam pas chera nemishe fili ke zamime kardido download kard?

    hata nashod bazesh konam?
    heeeeeeeeeeeeeeeeeeeelp

  6. #6

    نقل قول: دریافت و عملیات روی اعداد بزرگ در ++C

    با سلام.
    گفتید توضیح میخواید اومدم توضیح بدم!

    بدون کلاس هم میشه نوشت.فقط نیاز به آرایه برای نگهداری عدد هست.
    برای عمل جمع فقط یک for میخواید که هربار عددی رو از هر دو آرایه بگیره و با رقم نقلی جمع بزنه و در آرایه جواب قرار بده.
    int carry=0;
    int sum;
    for(i=lenth-1;i>=0;i--)
    {
    sum=a[i]+b[i]+carry;
    c[i]=sum%10;
    carry=sum/10;
    }

    و برای ضرب هم باید بکمک دو for همه اعضای آرایه اول رو در اعضای آرایه دوم ضرب کنی و برای هر حاصل ضرب نتیجه رو با رقم نقلی جمع بزنی و در آرایه سوم بریزی.نکتش فقط اینه که اندیس آرایه سوم باید بعد از هربار اجرای for داخلی (به ازای هر عدد از آرایه اولی ) یکی عقب بیاد.تو عمل ضرب دستی هم همین کار رو انجام میدیم.
    int carry,mul,col=0;
    for(i=a_lenth-1;i>=0;i--)
    {
    carry=0;
    for(j=b_lenth-1;j>=0;j--)
    {
    mul=(a[i]*b[j])+carry;
    c[j-col]+=mul%10;
    carry=mul/10;
    }
    col++;
    }


    تفریق هم به این ترتیبه که اگر عملوند اول از عملوند دوم کمتر بود،عملوند اول رو با 10 جمع میکنی و متغیر carry رو یک میکنی و حالا دفعه بعد اگه carry یک بود و عملوند اول صفر نبود از اون یه واحد کم میکنی و carry رو صفرمیکنی ، و اگر صفر بود عملوند اول رو 9 میگیری و carry رو دست نمیزنی.البته همه اینها بشرطی هستن که عملوند اول از دوم کوچکتر باشه.
    int carry=0;
    for(i=lenth-1;i>=lenth-a_lenth;i--)
    {
    c[i]=a[i]-b[i];
    if(carry==1)
    {
    if(a[i]==0)
    c[i]+=9;
    else
    {
    c[i]--;
    carry=0;
    if(c[i]<0)
    {
    c[i]+=10;
    carry=1;
    }
    }
    }
    if(c[i]<0)
    {
    c[i]+=10;
    carry=1;
    }
    }


    درمورد تقسیم تابحال فکرنکرده ام!

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •