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

نام تاپیک: ضرب دو عدد 100 رقمی در هم!؟!

  1. #1
    کاربر دائمی آواتار silentrise
    تاریخ عضویت
    مهر 1386
    محل زندگی
    Tehran
    پست
    147

    ضرب دو عدد 100 رقمی در هم!؟!

    سلام
    فکنم از عنوان متوجه سوال شده باشید!
    ضرب دو عدد 100 رقمی در هم و نشان دادن خروجی! چگونه؟
    با سپاس

  2. #2
    کاربر دائمی آواتار Saeed_m_Farid
    تاریخ عضویت
    تیر 1386
    محل زندگی
    فضای تهی میان دیوارها
    سن
    44
    پست
    1,046

    نقل قول: ضرب دو عدد 100 رقمی در هم!؟!

    نقل قول نوشته شده توسط silentrise مشاهده تاپیک
    سلام
    فکنم از عنوان متوجه سوال شده باشید!
    ضرب دو عدد 100 رقمی در هم و نشان دادن خروجی! چگونه؟
    با سپاس
    اين موضوع مكررا تو جاهاي ديگه بخش تكرار شده و شما هم بدون جستجو دوباره دارين تاپيك ميزنيد. جستجو كنيد اعداد بزرگ رو تو بخش سي.
    ضمنا يكي از دوستان دقيقا همين كار رو انجام دادن بدون كلاس و سربارگذاري عملگرها و مسائل پيچيده. از درست يا غلط بودن برنامشون مطمئن نيستم.
    جمع و ضرب اعداد n رقمی با استفاده از لیست پیوندی
    اين جواب رو دادم تا مدير بخش تاپيك شما رو حذف نكنه و اگه بعدا كسي مراجعه كرد بدرد بخوره ولي يه ضرب المثل معروف دسته بندي دنياي سايبر هست كه ميگه:
    انسانها به دو بخش تقسيم ميشن: اونايي كه باينري ميفهمند و اونايي كه باينري نمي فهمند يه بخش ديگه هم هستن كه نميتونن جستجو كنند.
    اميدوارم زياد جمله اش رو خراب نكرده باشم!

    با تشكر.
    آخرین ویرایش به وسیله Saeed_m_Farid : جمعه 20 دی 1387 در 11:04 صبح دلیل: بعلت تاپيك بعدي!

  3. #3
    کاربر دائمی آواتار silentrise
    تاریخ عضویت
    مهر 1386
    محل زندگی
    Tehran
    پست
    147

    نقل قول: ضرب دو عدد 100 رقمی در هم!؟!

    سلام
    من برنامه رو با روش روستایی نوشتم ولی الان دوست دارم بهینه بشه اگه کسی کمک کنه ممنون میشم!
    تو فایل ضمیمه می تونید برنامه رو ببینید,البته من برای زیبایی خروجی 39 *39 حساب کردم!
    راستی آقای Saeed_m_Farid دوباره به خودم ثابت شد که برنامه نویسی Syntax بلد بودن یا شعار دادن نیست!
    به هر حال سپاس
    عکس های ضمیمه عکس های ضمیمه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله silentrise : جمعه 20 دی 1387 در 04:48 صبح

  4. #4
    کاربر دائمی آواتار Saeed_m_Farid
    تاریخ عضویت
    تیر 1386
    محل زندگی
    فضای تهی میان دیوارها
    سن
    44
    پست
    1,046

    نقل قول: ضرب دو عدد 100 رقمی در هم!؟!

    سلام دوست عزيز
    چند تا سوال (و نكته) ميخوام عرض كنم :
    1- روش روستايي يعني چي؟
    2- اگه قرار باشه اندازه آرايه شما متغير باشه يا از ورودي عددها رو بگيرين كل برنامه تحت تاثير قرار ميگيره اونوقت چي كار بايد بكنين؟ نميشه كه واسه هر تغيير ورودي شما كدتون رو اصلاح كنيد.
    دوباره به خودم ثابت شد که برنامه نویسی Syntax بلد بودن یا شعار دادن نیست!
    3- منظورتون رو متوجه نشدم، ميبخشي يه مقدار خنگم و فقط syntax بلدم ولي فكر كنم شما هم يه مقدار دوپهلو صحبت فرموديد.
    الان دوست دارم بهینه بشه
    4- بهينه شدن تا چه حد واستون لازمه؟ اگه واسه تحويل پروژه تون ميخواين، نمونه هايي كه تو پست قبلي اشاره شد جوابتون رو ميدن ولي اگه واسه يه كار كابردي ميخواين و يه كد كامل كه تمام عملگرها رو شامل بشه يه كلاس هست كه از اينجا ميتونين بردارينش و توسط آقاي مسعود اقدسي فام نوشته شده كه اين كد پايين هم قسمت ضربش هست : من الان دارم اين هدر رو با اجازه ايشون (نويسنده برنامه) تو پروژه هامون استفاده ميكنم و نقص هاي خيلي كمي داشت كه با همفكري حل شد و يه يونيت تقريبا كامل و كاربردي شده (هموني كه لينكش رو دادم) كه تو سي شارپ هم تقريبا همين كلاس رو پياده سازي كرده و دارم استفاده ميكنم.

    BigInteger operator * ( const BigInteger &r ) const
    {
    BigInteger temp;
    if( !data || !r.data )
    return temp;
    if( *this == "0" || r == "0" )
    {
    temp.data = new char[ 1 ];
    if( temp.data )
    {
    temp.size = 1;
    temp.sign = false;
    temp.data[ 0 ] = '0';
    return temp;
    }
    }
    vector< unsigned > v( size + r.size );
    unsigned i, j, t, c;
    for( i = 0 ; i < size ; i++ )
    {
    c = 0;
    for( j = 0 ; j < r.size ; j++ )
    {
    t = v[ i + j ];
    v[ i + j ] = ( t + c + ( data[ i ] - '0' ) * ( r.data[ j ] - '0') ) % 10;
    c = ( t + c + ( data[ i ] - '0' ) * ( r.data[ j ] - '0' ) ) / 10;
    }
    if( c )
    v[ i + j ] = c;
    }
    for( i = 0 ; i < v.size() ; i++ )
    if( v[ v.size() - i - 1 ] != 0 )
    break;
    temp.data = new char[ v.size() ];
    if( temp.data )
    {
    temp.size = v.size() - i;
    temp.sign = ( sign && !r.sign ) || ( !sign && r.sign );
    for( j = 0 ; j < temp.size ; j++ )
    temp.data[ j ] = v[ j ] + '0';
    }
    return temp;
    }
    5- تو اين مدت كمي كه اينجا بودم به اين نتيجه رسيدم كه گذاشتن كد كامل درخواستي واسه دوستان با عرض معذرت باعث بدعادتي دوستان ميشه و دردسرهايي (از جمله سيل پيغامهاي خصوصي در مورد انجام پروژه هاي دانشجويي شون!) براي خودم ايجاد ميكنه : در نتيجه من يه تابع ساده واسه جمع دو تا عدد بزرگ نوشتم كه فقط واسه ايده دادن به شما بوده و سعي كردم كه تا حد امكان نزديك كد خودتون باشه و ليست پيوندي و كلاس و عملگر و ... توش نباشه؛ اميدوارم بدرد شما و دوستان ديگه بخوره و اگه مشكلي بود مشتاقم در موردش صحبت كنيم چون عجله اي نوشتم :
    #define MAX_DIGITS 50
    char * Add2Number( char *Number1
    , int Num1Len
    , char *Number2
    , int Num2Len)
    {
    int i, MaxLen, MinLen, deficient, CarryOut = 0;
    char Larger[ MAX_DIGITS ],
    Smaller[ MAX_DIGITS ],
    SumResult[ 2 * MAX_DIGITS ],
    DigNum;
    if (Num1Len > Num2Len)
    {
    strcpy(Larger, Number1); MaxLen=Num1Len;
    strcpy(Smaller, Number2); MinLen=Num2Len;
    }
    else
    {
    strcpy(Larger, Number2); MaxLen=Num2Len;
    strcpy(Smaller, Number1); MinLen=Num1Len;
    }
    deficient = MaxLen - MinLen;
    SumResult[MaxLen] = '\0';
    for (i=0; i<MaxLen; i++)
    {
    Larger[i] -= 48;
    if (i<MinLen) Smaller[i] -=48;
    }
    for (i=MinLen-1; i>=0; i--)
    {
    SumResult[i + deficient] = Larger[i + deficient]
    + Smaller[i] + CarryOut;
    CarryOut = SumResult[i + deficient] / 10;
    SumResult[i + deficient] = SumResult[i + deficient] % 10;
    }
    SumResult[deficient - 1] = Larger[deficient - 1] + CarryOut;
    for (i=0; i<deficient - 1; i++)
    SumResult[i] = Larger[i];

    for (int i=0; i<MaxLen; i++)
    SumResult[i] += 48;
    return SumResult;
    }
    با تشكر.

  5. #5
    کاربر دائمی آواتار silentrise
    تاریخ عضویت
    مهر 1386
    محل زندگی
    Tehran
    پست
    147

    نقل قول: ضرب دو عدد 100 رقمی در هم!؟!

    سلام
    من از شما سپاسگذارم که پیگیر این موصوع شدید!
    1-من دانشجو نیستم و نمیتونم هم بشم!(دلیلش مهم نیست)
    2-منظور از روستایی اینکه من C رو تا آرایه ها خوندم و روش های دیگه که مسلما بهتر از این همه FOR هست بلد نیستم!
    من هنوز کد شما رو مطالعه نکردم پس اجاره بدین بعد از مطالعه تشکر کنم!
    باسپاس

  6. #6

    نقل قول: ضرب دو عدد 100 رقمی در هم!؟!

    از لطف دوستان عزیز ممنونم.

    هر عزیزی که در مورد بخش های مختلف کد اصلاحاتی پیشنهاد بده، من در خدمت هستم.

    فکر کنم باید یه فکری هم برای بهینه سازی بیشتر ضربش بکنم. تا چه پیش آید.

    باز هم تشکر.

  7. #7

    Thumbs up نقل قول: ضرب دو عدد 100 رقمی در هم!؟!

    سلام
    من یه برنامه می خوام که 4 عمل اصلی رو روی اعداد بزرگ انجام بده .
    اگه کسی این برنامه رو داره یه کمکی به من بکنه.

    تنکی یو

  8. #8
    کاربر دائمی آواتار Keyhan Clever
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    گرگان
    سن
    28
    پست
    134

    Lightbulb نقل قول: ضرب دو عدد 100 رقمی در هم!؟!

    منظورتون از اعداد بزرگ تا چقدره ؟
    آخه هر نوع متغیری یه ظرفیتی داره.
    long int هم بالا خره پر میشه چون ظرفیتش 32 بیت بیشتر نیست
    ولی اگه منظورت خیلی بزرگ تر از اینهاست میتونی با آرایه ها انجام بدیش
    اگه میخوای بگو یه مختصری از دستوراشو برات بنویسم

  9. #9
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: ضرب دو عدد 100 رقمی در هم!؟!

    سلام به تاپیک زیر سر بزن جوابش دادیم
    ضرب و جمع دو عدد 300 رقمی؟

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    Mars
    پست
    62

    نقل قول: ضرب دو عدد 100 رقمی در هم!؟!

    برنامش خيلي راحته
    ابتدا دو رشته از ورودي ميگيري و در آرايه ذخيره مي كني
    125212512541251251251225
    +
    1252352212512541521252125
    بعد هم اعداد متناظر در آرايه رو با هم جمع مي كني
    اين براي جمعه اعداده براي ضرب هم همين روش

  11. #11

    نقل قول: ضرب دو عدد 100 رقمی در هم!؟!

    با سلام به همه دوستان من برنامه ضرب دو تا عدد 100 رقمی رو با استفاده از رشته ها و آرایه ها میخوام تو رو خدا کمکم کنید واسم حیاتیه در ضمن لیست پیوندی و کلاس هم قبول نیست
    ممنون yashar_zeus@yahoo.com

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

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