الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لماذا لا تظهر الكسور

بدأه AhmedSameh في 13 يوليو 2011 · 3 رد · 623 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
#include <iostream>

float average(int,int);
float average(long,long);
float average(float,float);

int main()
{
	int x,xx;
	long y,yy;
	float z,zz;
	std::cout << "Enter an int number:";
	std::cin >> x;
	std::cout << "Enter an int number:";
	std::cin >> xx;
	std::cout << average(x,xx);
	std::cout << "Enter an long number:";
	std::cin >> y;
	std::cout << "Enter an long number:";
	std::cin >> yy;
	std::cout << average(y,yy);
	std::cout << "Enter an float number:";
	std::cin >> z;
	std::cout << "Enter an float number:";
	std::cin >> zz;
	std::cout << average(z,zz);
}
float average(int x,int xx)
{
	return(x+xx)/2;
}
float average(long y,long yy)
{
	return(y+yy)/2;
}
float average(float z,float zz)
{
	return(z+zz)/2;
}

إذا أدخلت أول رقمين 2و 3 يظهر لي النتيجة 2 وليس 2.5 فلماذا لا تظهر الكسور رغم إني عامل نوع الارجاع float

وشكرا والسلام عليكم

#2

استخدم stream manipulators

#include <iomanip>      
using std::setprecision;

cout << setprecision(2) << average(x,xx);

http://www.cplusplus.com/reference/iostream/manipulators/

او استخدم

cout.precision(2);
cout << average(x,xx);
1


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3
AhmedSameh كتب:

#include <iostream>

float average(int,int);
float average(long,long);
float average(float,float);

int main()
{
	int x,xx;
	long y,yy;
	float z,zz;
	std::cout << "Enter an int number:";
	std::cin >> x;
	std::cout << "Enter an int number:";
	std::cin >> xx;
	std::cout << average(x,xx);
	std::cout << "Enter an long number:";
	std::cin >> y;
	std::cout << "Enter an long number:";
	std::cin >> yy;
	std::cout << average(y,yy);
	std::cout << "Enter an float number:";
	std::cin >> z;
	std::cout << "Enter an float number:";
	std::cin >> zz;
	std::cout << average(z,zz);
}
float average(int x,int xx)
{
	return(x+xx)/2;
}
float average(long y,long yy)
{
	return(y+yy)/2;
}
float average(float z,float zz)
{
	return(z+zz)/2;
}

إذا أدخلت أول رقمين 2و 3 يظهر لي النتيجة 2 وليس 2.5 فلماذا لا تظهر الكسور رغم إني عامل نوع الارجاع float

وشكرا والسلام عليكم

يعمل بشكل صحيح.

في الدالة الاولى

(x+xx)/2;

النتيجة هي int ایضا. و ثم فی return یقوم بارجاع النتيجة بشكل float. یعنی قبل الارجاع یتم عمل rounding.

تم تعديل هذه المشاركة بواسطة IO JOC في 13 يوليو 2011 في 09:11

..:: رَبِّ زِدْني عِلْمًا ::..

#4
اقتباس
float average(int x,int xx)

{

return(x+xx)/2.;

}

float average(long y,long yy)

{

return(y+yy)/2.;

}

float average(float z,float zz)

{

return(z+zz)/2.;

}

ضيف نقطة أو استخدم static cast

#include <iostream>
using namespace std;
int main()
{
        cout << 1/2 << endl;
        cout << 1/2. <<endl;
        cout << float(1/2) << endl;
        cout << float(1)/float(2) <<endl;

}

تم تعديل هذه المشاركة بواسطة -Ahmed Hassan في 14 يوليو 2011 في 15:58

وَمَا أُوتِيتُمْ مِنْ الْعِلْمِ إِلاَّ قَلِيلاً

مواضيع مشابهة