السلام عليكم
إخواني أنا جديد على c++ و تظهر لي مشاكل غريبة جدا فأرجو المساعدة
في الكود التالي يتم عمل حلقة تكرارية يتم تنفيذها طالما الشرطان محققان و لكن المشكلة عندما لا يتحقق الشرط الأول تبقى الحلقة مستمرة و لا تتوقف
الكود :
#include<iostream.h>
void main()
{
double decnum=0.4;
double tknum=0;
bool firstcounter=1;
int ls=2;
while(decnum!=tknum && decnum!=0)// لماذا الشرط الأول محقق دائما مع أن المتغيرين يساويان 0.4 في دورة من الدورات
{
decnum*=ls;
cout<<tknum;
cout<<decnum;
if(firstcounter==1)
{
tknum=decnum/2;
firstcounter=0;
}
else
{
decnum=decnum-long(decnum);
}
if(decnum==tknum) //و هنا لا يتحقق الشرط أبدا
cout<<" tk ";
}
}حيث يتم ضرب المتحول decnum بـ 2 و طرح القسم الصحيح منه في كل دورة و ذلك حتى يصبح مساويا للمتحول tknum و لكن المشكلة أنه حتى عندما يساويه تبقى الحلقة مستمرة
ملاحظة : إذا استبدلنا سطر الحلقة بالتالي : تتوقف الحلقة من بدايتها
while(decnum!=0.4&& decnum!=0)