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

سؤال عن باقي القسمة operator%

مغلق
بدأه السهم الناري في 2 يوليو 2003 · 17 رد · 1,391 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته ...

أخواني سؤالي هو هل باقي القسمة خاصة فقط باالاعداد الصحيحة intget أو يمكن أنت يكون الخرج حقيقي float .....

لاني حاولة إعادة توصيف المعامل % في class فإذا كان الاعداد صحيحة قبل البرنامج وعمل على مايرام واذا كان الخرج حقيقي يظهر عندي خطأن وهو يطالب بأن الطرف الايسر float فما هو العمل ...

هذا هو الرنامج مع ملاحظة اذا الغيت التعليقات سيكون البرنامج صحيح واذا لم تلغها ستظهر المشكلة التي اريد حلها ...ز

#include

//operator%

//ÅÚÇÏÉ ÊæÕíÝ ãÚÇãá ÈÇÞí ÇáÞÓãÉ

class Counter

{

public:

Counter ():X(0) { }

Counter( float x /*int x*/){ X=x; }

~Counter ( ) { }

void SetX(/*int x*/ float x) { X = x; }

// int GetX () const { return X; }

Counter operator% (const Counter & );

float GetX() const { return X; }

private:

// int X;

float X;

};

Counter Counter::operator% (const Counter &rhs)

{

return ( X % rhs.GetX() );

}

int main()

{

Counter C1,C2,C3;

//int x,y;

float x,y;

cout<<"n Enter Tow number : ";

cin >> x >> y;

C1.SetX(x);

C2.SetX(y);

C3 = C1 % C2;

cout << "n" << x << " % " << y << " = " << C3.GetX() << "n";

return 0;

}

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#2
#include


//operator%
//إعادة توصيف معامل  باقي القسمة 




class  Counter
{
public:
	Counter ():X(0) { }
	Counter( float x /*int x*/){ X=x; }
	 ~Counter ( ) { }
	 void SetX(/*int x*/ float x) { X = x; }
	// int GetX () const { return  X; }
	 Counter operator% (const Counter &  );

	 float GetX() const { return X; }



private:
//	int X;
	float X;
};


Counter Counter::operator% (const Counter &rhs)
{
	return ( X % rhs.GetX() );
}

int main()
{
	Counter  C1,C2,C3;
	//int x,y;
	float x,y;

	cout<<"n Enter Tow number : ";
	cin >> x >> y;

	C1.SetX(x);
	C2.SetX(y);

	C3 = C1 % C2;

	cout << "n" << x << " % " << y << " = " <<  C3.GetX() << "n";

		return  0;

}

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#3

أريد رد ياشباب...................

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#4

وعليكم السلام ورحمة الله وبركاته ،،

أخي العزيز السهم الناري معامل باقي القسمة % لايمكن إستخدامة

إلا مع الاعداد الصحيحة integer واستخدامة مع غيرها يعتبر خطأ قواعدياً

حسب ماقرأت في احد الكتب.

#5

أنا لاأعلم هل جربت عددين float وبينهما % ستجد الإجابة

على العموم أخي الفضل هناك قاعدة في علم الكمبيوتر

GIGO

أي مدخل أي مخرج

Garbage Input Garbage Output

#6

شكرا على الر أيه الأخوة ولكن سؤال لأخي أبو بكر ياليت توضح هالقاعدة البرمجية حتى تعم الفائدة ماهو قصدك ...

أنا لم أفهم هذه القاعده ياليت توضحها أكثر وتخبرني وش معناها " أي مدخل أي مخرج"

كأنها لغز ...

وبارك الله في جهودك............وماهو اسم الكتاب الذي يحتوي مثل هذه القواعد...

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#7

لا حول و لاقوة إلا بالله

الأخ الفاضل السهم الناري

هذه القاعدة قالها دكتور في المحاضرة

عندك برنامج شغال أعطيته أي رقم صح أم خطأ فهو يعطيك ناتج صح إن كان المدخل صح أو أي ناتج إذا كان المدخل خطأ

إن شاءالله تكون القاعدة وضحت

#8

نعم وضحت وجزاك الله خيرا ...

كلام الدكتور في محله اذا كان المدخل صح الناتج صح وغير ذلك يأتيك ما لا تتوقعه من المخرجات...

شكرا.................

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#9

ماهو توقعك للعملية التالية 3.5 % 2.5 وكذلك 3.5 % 2

اذا اعطيتني اجابة سوف نحاول ان نكتب برنامج:

هل تعلم ان

x/2 !=x/2.0 !=0.5*x

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#10

الحل الأول يساوي 1 أم الحل الثاني يساوي 1.5 فهل توقعاتي بمحلها ...

وهل أفهم أنني أحاول عمل شيء مستحيل لايعمل الا على intger ...

فلو قلنا 3/2 =1.5 float

ولو قلنا 3%3=0 int

فلماذ لانضع 4%3=1 int

فلماذا لاتضبط 4.5%4 = 0.5 float لماذا لماذا ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#11

الظاهر انك ناسي الحساب تماما

حول الكسر العشري الى اعتيادي وقم بالقسمة ستجد ان الباقي في الحالة الأولى يساوي 10 وفي رواية اخرى الباقي 2 (فسرها)

فما بالك بالكمبيوتر الذي يتعامل مع الأعداد الحقيقية بطريقة معقدة عن طريقة تمثيل الأعداد عند الأنسان

وعلى فكرة احذر من ان لو قلنا 3/2 =1.5

فالنتيجة في سي++=1 وليس 1.5

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#12

يأخ khwlani بعد التحية ........

أنت قصدك أني أحول الارقام الا أعداد ثنائية banary sestem التي يتعامل معها الجهاز " الكمبيوتر " ثم أصل للنتيجة التي وضعتها أنت " 10 " ....

وماهو الحل يعني بأختصار """"" لايمكن عمل مأريده """" .......

ومع خالص تحياتي..................

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#13

ال 10 هي نا تج كما يلي

35/10 : 25/10 =(35/10) *(10/25)=35/25  -----------> باقي القسمة =10

3.5/2.5=(3  1/2 ) : ( 2 1/2)=(7/2) : (5/2)=7/5---------->باقي القسمة=2

من المثال السابق انه لعملية واحدة تجد اكثر من اجابة لذلك لا يمكن عملها كبرنامج ( هذا راي وقد يكون خاطئا)

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#14

شكرا أخ kwhalni على هالتوضيح .........

وأسف جداً تعبتك معاي.........

وبالنسبة لرأيك أنا أحترمه جداً وأقدره ويمكن كلامك يكون صحيح ومعقول مقارنه بمحاولاتي الفاشلة " غير الناجحه لعمل البرنامج " .......

هذا وشكرا وبالتوفيق يأخ kwhalni .

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#15

ارجو ان لا تأخذ الرد بشى من الحساسية وانما لا اقصد الأ المداعبة فعفوا الف مرة

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#16

أخ khwlani المحترم لم أخذ الرد بحساسية بل أخذته بشفافيه مطلقه ولا حساسيه ولا شيء أنما أنت أخ كريم وصاحب بأذن الله .......على طول الطريق.

لك خالص تحياتي أخ khwlani ومع الف شكر لمدعباتك المفيده.....

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#17

اعتذر عن الأجابة السابقة

وفي البارحة اي بعد اكثر من سنه اكتشفت ان VC++

تدعم مثل هذه الدالة

الدالة هي اعتقد fmod

لذلك تذكرت ان هناك نقاش حول الموضوع فاردت التنبيه.

تم تعديل هذه المشاركة بواسطة khwlani في 2 مايو 2005 في 21:50

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#18

السلام عليكم

الله اكبر بعد سنه ياسلام عليك ياخي kwlina بارك الله فيك .

رجعتنا لايام زمان ايام الحماس والشغل.............

على فكرة الدالة fmod ماذا تاخذ ماهو البارميتروهل تعيد قيمة سأجربها على كلحال الى ان ياتي الرد........

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

هذا الموضوع مغلق.

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