P30World Forums
http://www.p30world.com/nw_imgs/rtl1.gif دانلود نرم افزار     http://www.p30world.com/nw_imgs/rtl1.gif فروشگاه اینترنتی
برگشت   P30World Forums > طراحی وب / برنامه نویسی > برنامه نويسي > C

تابلو اعلانات

C کلیه مباحث و موضوعات در مورد این زبان برنامه نویسی ... C , C++ , C# , Visual C



جواب
 
اختيارات تاپيک نمايش رسم
قديم 11-04-2009, 12:10 AM   #1
hossein2kk
در آغاز فعالیت
 
تاريخ عضويت: May 2007
پست ها: 7
پيش فرض هم جالب و هم اعصاب خرد كن ! يه باگ جالب

سلام
من امسال تازه وارد رشته نرم افزار شدم . دو سالي بود كه php‌كار مي كردم اولش برنامه نويسي تحت كلاينت يكم به نظرم سخت مي اومد ولي ديدم كه خيلي راحت هست !
بيخيال امروز طبق نمونه سوالاتي كه استادمون داده بود تمرين كنيم رسيدم به تابع فاكتوريل .
قبلا نمونه اون رو با جاوا اسريپت نوشته بودم پس با همون الگوريتم اين كد رو نوشتم :
کد:
برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید
و براي خودم 6 رو مثال زدم و از شانس ما كار كرد .
رفتم جلوتر و رسيدم به يه برنامه براي جايگشت r شئ از n شئ .همي اين كد را نوشتم :
کد:
برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید
از شانس باز من جايگشت 2 شئ از 4 شئ رو مثال زدم كه بازم جواب درست در اومد.كلي شاد و خندون داشتم براي دست گرمي يك چند تا عدد مي زدم يهو حالم گرفته شد ! زدم جايگشت 3 شئ از 10 شئ جواب نرم افزار اومد 4 ! ولي روي كاغذ جواب بايد مي شد 720 !
مثل عادت قبلي برنامه رو تكه تكه كردم و اجرا كردم ديدم خروجي خروجي فكتوريل 10 رو داده 24320 درست بود!
داشتم ديوونه مي شدم كه بردم تابع رو تو حلقه ببينم چه مرگشه .
اين كدم بود :
کد:
برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید
و وقتي خروجي رو ديدم شاخ در اوردم !!!
خروجي فاكتوريل 8 و 9 و 12 و 13 منفي بود!!!
در هر صورت من هر كاري كردم حتي تابع رو از حالت بازگشتي به حالت حلقه اي تبديل كردم ولي بازم افاقه اي نكرد . مي دونم ممكن يه سوتي داده باشم گنده ! ولي واقعا يه بزرگواري ژيدا مي شه ما رو از اين سردرگمي دربياره ؟
ممنون پيشاپيش !
سرافراز باشيد
hossein2kk is offline   Reply With Quote
تبلیغــــات
Advertisement
 
قديم 11-04-2009, 01:04 AM   #2
omidrb
عضو جديد
 
تاريخ عضويت: Oct 2009
پست ها: 3
پيش فرض

با سلام دوست عزیز شما الگوریتم برامتون مشکلی نداره اما به نکته در کامپیوتر هیچ وقت توجه نداشته اید
در برنامه نویسی داده های شما در متغییر هایی ذخیره میشوند این متعیرها ظرفیت محدودی دارند در مثال شما همانطور که در کدتان دیدم متغیر اصلی شما که خروچی تابعتون هست در یک متغیر int که دوبایتی از نوع علامتدار است ذخیره میشود
با توجه به این نوع انتخابی شما حداکثر 32767 را میتوانید در آن ذخیره کنید (1-15^2) بنابراین فاکتوریل 8 که عددی حدود 40000 میشود در این متغیر جا نمیشود و باعث سرریز میشود
و نتیجه منفی کاملا طبیعی است
برای رفع این مشکل باید بجای نوع int از longint استفاده کنید
البته این هم بدین معنی نیست که تا بینهایت میتونید فاکتوریل بگیرید
امیدوارم مشکلتون را حل کرده باشم
موفق باشید
omidrb is offline   Reply With Quote
قديم 11-04-2009, 04:04 AM   #3
CppBuilder2006
داره خودمونی میشه
 
CppBuilder2006's Avatar
 
تاريخ عضويت: Sep 2008
محل سكونت: ماشین زمان خودم!
پست ها: 177
پيش فرض

سلام
compiler شما بسیار قدیمی است.
به جای int از long استفاده کنید.
CppBuilder2006 is offline   Reply With Quote
قديم 11-04-2009, 06:46 AM   #4
hossein2kk
در آغاز فعالیت
 
تاريخ عضويت: May 2007
پست ها: 7
پيش فرض

من turbo c++ نسخه 4.5 رو نصب كردم .
يعني مشكل از اونجاست ؟
hossein2kk is offline   Reply With Quote
قديم 11-04-2009, 06:58 AM   #5
hossein2kk
در آغاز فعالیت
 
تاريخ عضويت: May 2007
پست ها: 7
پيش فرض

من turbo c++ نسخه 4.5 رو نصب كردم .
يعني مشكل از اونجاست ؟
hossein2kk is offline   Reply With Quote
قديم 11-04-2009, 12:34 PM   #6
milad222
در آغاز فعالیت
 
تاريخ عضويت: Apr 2007
پست ها: 1
پيش فرض

بجای "Turbo C++" از "Borland C++" (بورلند سی پلاس پلاس) استفاده کنید .
milad222 is offline   Reply With Quote
قديم 11-08-2009, 01:08 AM   #7
CppBuilder2006
داره خودمونی میشه
 
CppBuilder2006's Avatar
 
تاريخ عضويت: Sep 2008
محل سكونت: ماشین زمان خودم!
پست ها: 177
پيش فرض

نقل قول:
نوشته شده توسط hossein2kk مشاهده تاپيک
من turbo c++ نسخه 4.5 رو نصب كردم .
يعني مشكل از اونجاست ؟
مشکل که نه.
compiler های قدیمی برای int دو بایت در نظر می گیرن که برای کار شما کافی نیست.
CppBuilder2006 is offline   Reply With Quote
تبلیغــــات
Advertisement
 
جواب


کاربراني که اين گفتگو را مشاهده ميکنند: 1 (0 کاربران و 1 مهمان)
 
اختيارات تاپيک
نمايش رسم

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

BB code is روشن
شکلک ها روشن هستند
کد [IMG] اکنون روشن میباشد
HTML کد خاموش مي باشد

پرش



واحد زمان برحسب GMT +4.5. ساعت هم اکنون 10:00 AM.


Powered by: vBulletin Version 3.8.1
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden
کليه حق و حقوق متعلق است به گروه نرم افزاري P30world
استفاده از مطالب اين سايت به هر نحو ، منوط به کسب اجازه کتبي از مديريت ميباشد
Email : Forum [at] p30world.com    Fax : +98 (131) 3245397

دانلود نرم افزار     خرید اینترنتی از فروشگاه آنلاین     سفارش تبلیغات     تماس با مدیریت وب سایت