PDA

View Full Version : سوال: مجموع اعدادی که مابین 0 و 1 هس در c++



kamran_14
پنج شنبه 07 دی 1391, 23:17 عصر
سلام
خسته نباشید
می شه لطف کنید به این برنامه نگاه کنید که آیا این برنامه ی من ایراد داره یا نه؟
تواین برنامه پیشامدها رو تا موقعی می گیره که مجموع پیشامدها برابر با یک باشه
A[i].peshammad = همون پیشامد هس
sum_peshammad=همون مجموع پیشامدهاس
من به ترتیب اعداد 0.1و0.2و0.4و0.2و0.1 می دم ولی هیچ موقع مجموع پیشامد یک نمی آد
این مشکل برا چیه؟
آخه من اعداد بزرگ نمی دم!



sum_peshammad=0.0;
i=0;
while(sum_peshammad<1.0)
{
cout<<"Enter Peshammad= ";
cin>>A[i].Peshamad;
if (sum_peshammad+A[i].Peshamad<=1.0)
{
sum_peshammad+=A[i].Peshamad;
i++;
}
else cout<<"error";
}

aidinMC
پنج شنبه 07 دی 1391, 23:42 عصر
دستور else رو به شکل زیر تغییر بده


else {
sum_peshammad+=A[i].Peshamad;
cout << "error";


در کل کار با اعداد اعشاری یه خورده سخته چون همیشه یه خورده خطای ناچیز دارن !!!
شما وقتی 0.1 وارد میکنی وبا 0.2 جمع میکنی حاصل یه همچین چیزی میشه 0.300000001 به خاطر همین تو حلقه شما آخرین باری که 0.1 رو میزنید از نظر ما درسته ولی کامپایلر که اعداد قبلی رو جمع بسته حاصل رو یه همچین چیزی قرار داده : 0.9000004 به همین دلیل دستور if شما نقض میشه و A[i].p... رو با sum جمع نمیکنه و از حلقه خارج نمیشه ....
البته این else که من نوشتم فقط برا این اعداد جواب میده و همیشه درس جواب نمیده خودت فک کن یه خورده بهترش کن...