تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 7 از 7

نام تاپيک: هم جالب و هم اعصاب خرد كن ! يه باگ جالب

  1. #1
    در آغاز فعالیت
    تاريخ عضويت
    May 2007
    پست ها
    7

    پيش فرض هم جالب و هم اعصاب خرد كن ! يه باگ جالب

    سلام
    من امسال تازه وارد رشته نرم افزار شدم . دو سالي بود كه php‌كار مي كردم اولش برنامه نويسي تحت كلاينت يكم به نظرم سخت مي اومد ولي ديدم كه خيلي راحت هست !
    بيخيال امروز طبق نمونه سوالاتي كه استادمون داده بود تمرين كنيم رسيدم به تابع فاكتوريل .
    قبلا نمونه اون رو با جاوا اسريپت نوشته بودم پس با همون الگوريتم اين كد رو نوشتم :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و براي خودم 6 رو مثال زدم و از شانس ما كار كرد .
    رفتم جلوتر و رسيدم به يه برنامه براي جايگشت r شئ از n شئ .همي اين كد را نوشتم :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    از شانس باز من جايگشت 2 شئ از 4 شئ رو مثال زدم كه بازم جواب درست در اومد.كلي شاد و خندون داشتم براي دست گرمي يك چند تا عدد مي زدم يهو حالم گرفته شد ! زدم جايگشت 3 شئ از 10 شئ جواب نرم افزار اومد 4 ! ولي روي كاغذ جواب بايد مي شد 720 !
    مثل عادت قبلي برنامه رو تكه تكه كردم و اجرا كردم ديدم خروجي خروجي فكتوريل 10 رو داده 24320 درست بود!
    داشتم ديوونه مي شدم كه بردم تابع رو تو حلقه ببينم چه مرگشه .
    اين كدم بود :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و وقتي خروجي رو ديدم شاخ در اوردم !!!
    خروجي فاكتوريل 8 و 9 و 12 و 13 منفي بود!!!
    در هر صورت من هر كاري كردم حتي تابع رو از حالت بازگشتي به حالت حلقه اي تبديل كردم ولي بازم افاقه اي نكرد . مي دونم ممكن يه سوتي داده باشم گنده ! ولي واقعا يه بزرگواري ژيدا مي شه ما رو از اين سردرگمي دربياره ؟
    ممنون پيشاپيش !
    سرافراز باشيد

  2. #2
    در آغاز فعالیت
    تاريخ عضويت
    Oct 2009
    پست ها
    5

    پيش فرض

    با سلام دوست عزیز شما الگوریتم برامتون مشکلی نداره اما به نکته در کامپیوتر هیچ وقت توجه نداشته اید
    در برنامه نویسی داده های شما در متغییر هایی ذخیره میشوند این متعیرها ظرفیت محدودی دارند در مثال شما همانطور که در کدتان دیدم متغیر اصلی شما که خروچی تابعتون هست در یک متغیر int که دوبایتی از نوع علامتدار است ذخیره میشود
    با توجه به این نوع انتخابی شما حداکثر 32767 را میتوانید در آن ذخیره کنید (1-15^2) بنابراین فاکتوریل 8 که عددی حدود 40000 میشود در این متغیر جا نمیشود و باعث سرریز میشود
    و نتیجه منفی کاملا طبیعی است
    برای رفع این مشکل باید بجای نوع int از longint استفاده کنید
    البته این هم بدین معنی نیست که تا بینهایت میتونید فاکتوریل بگیرید
    امیدوارم مشکلتون را حل کرده باشم
    موفق باشید

  3. #3
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Sep 2008
    پست ها
    253

    پيش فرض

    سلام
    compiler شما بسیار قدیمی است.
    به جای int از long استفاده کنید.

  4. #4
    در آغاز فعالیت
    تاريخ عضويت
    May 2007
    پست ها
    7

    پيش فرض

    من turbo c++ نسخه 4.5 رو نصب كردم .
    يعني مشكل از اونجاست ؟

  5. #5
    در آغاز فعالیت
    تاريخ عضويت
    May 2007
    پست ها
    7

    پيش فرض

    من turbo c++ نسخه 4.5 رو نصب كردم .
    يعني مشكل از اونجاست ؟

  6. #6
    در آغاز فعالیت
    تاريخ عضويت
    Apr 2007
    پست ها
    2

    پيش فرض

    بجای "Turbo C++" از "Borland C++" (بورلند سی پلاس پلاس) استفاده کنید .

  7. #7
    اگه نباشه جاش خالی می مونه
    تاريخ عضويت
    Sep 2008
    پست ها
    253

    پيش فرض

    من turbo c++ نسخه 4.5 رو نصب كردم .
    يعني مشكل از اونجاست ؟
    مشکل که نه.
    compiler های قدیمی برای int دو بایت در نظر می گیرن که برای کار شما کافی نیست.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •