السلام عليكــم ورحمـة الله وبركاتــه ،،
أخوتي قمت بكتابة دالة لتحويل أي عدد عشري إلى عدد صحيح مثلا
.23 -> 23 .345 -> 345
وهذا هو الكود :
// checks if two double numbers are equal
bool doub_equal(double,double);
// returns the integer form of any floating value but must include cmath
int ret_int(double);
void main()
{
double aaa;
cin >> aaa;
cout << ret_int(aaa) << endl;
}
bool doub_equal(double x , double y)
{
if( x-y < 1e-6 && x-y > -1e-6)
return true;
else
return false;
}
int ret_int(double input)
{
while(true)
{
cout << input << " " << floor(input) << endl; // this line is for debugging
if( doub_equal(input,floor(input)) ) return input;
input = input * 10;
}
}ممكن حد يسألني إيش وظيفة doub_equal
ببساطة لأن مساواة رقمين عشريين قد يعطي نتائج غير صحيحة:
الحين الكود يعطيني نتائج صحيحة ولكن في بعض الأحيان دالة floor تعطي نتائج غريبة :
مثلا
input .2345 wrong answer floor(2345) = 2344
اتمنى من الاخوة تجربة الكود وادخال .2345 الدالة floor تعطي نتائج خاطئة
إذا أحد من الإخوة عنده طريقة أخرى فليتفضل

