سلام،
دوست عزیز این سورس برنامه بود دیگه ! فقط include و main توش نبود دیگه ...ولی من خیلی دوست دارم که یکم راهنمایی بشم تا اینکه کلا یهدفع سورس برنامه رو ببینم
باشه، اونم باشه.و اخر اینکه اگه میشه شما به تایپیک هر ورز سر بزن چون حدالقل من چند تا سوال میپرسم شما جواب بده. راستی اگه میشه در مورد این سورس یکم توضیح بده و از این به بعد همیشه یکم رهانمایی کن سورس رو نزار. ممون دوست عزیز بازم
سلام، راستش من این برنامه رو تو یه فایل text نوشتم و دیگه اجراش نکردم چون مطمئن بودم درسته اما خوب مثل اینکه اشتباهات کوچیک و بزرگی داشت(!) اما ویرایشش کردم و الآن درسته. اینکه متغیر carry داخل حلقه تعریف شده مشکلی نیست و خطر هم نداره... اشتباه از من بود نه از متغیرهایی که داخل حلقه تعریف شدن.با سلام و تشکر از شما دوست گرامی من هم معتقدم که شما الگوریتم این کد و همینطور کامنتهای توضیحی رو هم بیان بفرمایید چون من کلا از منطق ریاضی که بکار رفته سر در نیاوردم
در ضمن برنامه مشکلات داره یکی این که متغیر های i و carry داخل حلقه تعریف شده اند که این باگ خطر داره
دوم این که متغیر i که در داخل بلوک تعریف شده در آخر برنامه خارج از بلوک استفاده شده که منطقی نیست.
منتظر توضیحات کامل شما هستم
شاد باشید
و اما برنامه :
آرایه ی a در هر مرحله عدد 2 به توان c رو نگهداری میکنه و برای اینکه 2 به توان c+1 رو حساب کنیم کافیه که آرایه ی a رو در 2 ضرب کنیم اما نه به این صورت که تک تک اعضاشو تو 2 ضرب کنیم. a عدد 2 به توان c رو به صورت معکوس ذخیره میکنه یعنی رقم یکان 2 به توان c خونه ی اول a ، رقم دهگان 2 به توان c خونه ی دوم a و ... چرا این کار رو کردم !؟ فکر کنید ببینید اگه معکوس ذخیره نمیکردم چه مشکلاتی پیش میومد...
خوب حالا برای ضرب کردن آرایه ی a تو عدد 2 مثل ضرب معمولی عمل میکنیم. carry هم اگر یک بشه مشخص میکنه که تو این مرحله 10 بر یک داریم... متغیر L هم طول عدد 2 به توان c رو نگهداری میکنه و مشخص میکنه که هر مرحله چندبار باید ضرب انجام بدیم... فکر نمیکنم دیگه حرفی باقی مونده باشه، خودتون هم اگر یه بار برنامه رو trace کنین بهتر کار دستتون میاد...