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

نام تاپیک: مشكل در برنامه ضرب

  1. #1

    مشكل در برنامه ضرب

    دوستان گرامي! يه برنامه نوشتم واسه ضرب كردن اعداد بزرگ، ولي نميدونم چرا هر عددي كه ميدم بهم عدد -48 رو به عنوان جواب ميده! كسي ميتونه كمك كنه؟ (ظاهرا مشكل اونجاست كه ميخواد c[j][i] رو با هم جمع كنه كه نميدونم چرا مقدار درستشو نميگيره!)


    void main()
    {
    char A[50] , B[50] , R[100], c[50][100];
    int i , j , k , a , b , sum=0 , sum2=0, d1, d2, d3, d4;

    cin >> A;
    cin >> B;

    a = strlen(A);
    b = strlen(B);

    for (j=b-1; j>=0; j--)
    {
    d1 = B[j]-'0';
    k = a+b - (b-j)+1;
    for (i=a-1; i>=0; i--)
    {
    d2 = A[i]-'0';
    sum = sum/10 + (d1*d2);
    if (i==0) c[b-j][k] = sum;
    else c[b-j+1][k] = sum%10;
    k--;
    }
    }

    for (i=a+b-1; i>=0; i--)
    for (j=0; j<b; j++)
    {
    d4 = c[j][i]-'0';
    sum2= sum2/10 + d4;
    R[i] = sum2%10;
    }

    for (i=0; i<a+b; i++)
    d3 = R[i] - '0';
    cout << d3;

    }



    آخرین ویرایش به وسیله Salar Ashgi : شنبه 05 تیر 1389 در 10:19 صبح دلیل: کدها را در داخل تگ کد(#) قرار دهید !

  2. #2

    نقل قول: مشكل در برنامه ضرب

    كسي نبود؟ من تا فردا وقت دارم فقط!

  3. #3

    نقل قول: مشكل در برنامه ضرب







  4. #4
    کاربر دائمی آواتار BahmanDB
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    شهر اولین ها
    پست
    273

    نقل قول: مشكل در برنامه ضرب

    ضرب اعداد صحیح بزرگ
    مسئله: ضرب دو عدد صحیح بزرگ u و v





    large _ integer prod ( large_integer u, large_integer v)
    {
    large_inreger x , y , w , z ;
    int n , m ;
    n = maximum(number of digits in u,number of digits in v)
    if (u = = 0 || v = = 0)
    return 0 ;

    else if (n < = threshold)
    return u × v obtained in the usual way;
    else {
    m = Į n / 2 ⌡;
    x = u divide 10 ^ m ; y = rem 10 ^ m;
    w = v divide 10 ^ m ; z = rem 10 ^ m;
    return prod (x ,w) × 10 ^2m + ( prod ( x, z) + prod (w, y )) × 10 ^ m + prod ( y, z);
    }
    }






    تحلیل پیچیدگی زمانی در بدترین حالت برای ا لگوریتم( ضرب اعداد صحیح)
    عمل اصلی: دستکاری یک رقم دهدهی در یک عدد صحیح بزرگ در
    هنگام جمع کردن ، تفریق کردن، یا انجام اعمالdivide 10 ^ m ،
    rem 10 ^m یا ×10 ^ m. هر یک از این اعمال را m بار انجام می دهد.
    اندازه ورودی: n ، تعداد ارقام هر یک از دو عدد صحیح.

    به ازای n > s که n توانی از 2استW ( n ) = 4 W (n / 2) + cn
    W ( s ) = 0

    W ( n ) Є θ ( n² )

    ضرب اعداد صحیح بزرگ 2






    large_integer prod2 (large_integer u , large_ integer v)
    {
    large_integer x , y , w , z , r , p , q;
    int n , m;
    n = maximum (number of digits in u,number of digits in v);
    if (u = = 0 || v = = 0)
    return 0 ;
    else if (n < = threshold)
    return u × v obtained in the usual way;
    else {
    m = Į n / 2 ⌡;
    x = u divide 10 ^ m ; y = rem 10 ^ m;
    w = v divide 10 ^ m ; z = rem 10 ^ m;
    r = prod2 (x + y, w + z );
    p = prod2 ( x , w )
    q = prod2 ( y , z );
    return p ×10 ^ 2m + ( r – p – q ) × 10 ^ m +q ; }
    }









    تحلیل پیچیدگی زمانی در بدترین حالت برای الگوریتم( ضرب اعداد صحیح2)
    عمل اصلی: دستکاری یک رقم دهدهی در یک عدد صحیح بزرگ در
    هنگام جمع کردن ، تفریق کردن، یا انجام اعمالdivide 10 ^ m ،
    rem 10 ^m یا ×10 ^ m. هر یک از این اعمال را m بار انجام می دهد.
    اندازه ورودی: n ، تعداد ارقام هر یک از دو عدد صحیح.

    به ازای n > s که n توانی از 2است
    3W(n/2)+ c n <=W (n) <= 3W (n / 2 +1) + c n
    W (s) = 0
    W (n) = θ (n ^ 1.58

  5. #5

    نقل قول: مشكل در برنامه ضرب

    خيلي خيلي ممنونم و معذرت ميخوام از سرچ نكردنم. ولي راستش در واقع ميخواستم ببينم مشكل برنامه اي كه نوشتم چي بود (البته ميدونم يه قسمتي رو اضافه كاري كردم، ولي نميدونم چرا جواب درست نميده)، نه اينكه يه برنامه ي آماده بخوام .... .
    بازم ممنون به هر حال

  6. #6

    نقل قول: مشكل در برنامه ضرب

    BahmanDB عزیز ، ممنون از پست مفیدتون ، ولی اینجا تالار الگوریتم نیست که مباحث تحلیل الگوریتم ها

    بحث بشه !






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

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