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

كلاس Biginteger للتعامل مع الأعداد الصحيحه الكبيره

بدأه amin_mu123 في 10 سبتمبر 2008 · 10 رد · 1,671 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هذا الكلاس يتعامل مع الأعداد الصحيحه الكبيره

وقد قمت بإعاده تعريف للمعاملات الآتيه

+ - * / % += -= == > <

وأتمنى منكم تجربته لإرشادى عن العيوب الموجوده به لإصلاحها

وكذلك البحث معى عن خوارزميه أخرى للقسمه لأن الخوارزميه التى استخدمتها بطيئه شوى

ويوجد دوال أخرى مفيده

لتحميل الكلاس من المرفقات

وشكرا لكم

BigInt.rar

تم تعديل هذه المشاركة بواسطة amin_mu123 في 10 سبتمبر 2008 في 03:37

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#2

جزآآك الله خير

جآآري المشاهدة

والخاملون اذا غدوت تلومهم سمعوك في اذانهم تترنم .. هذا نحن العرب للاسف

[spacing]

HaKxEr HaCker

My Site

[/spacing]

#3

تصحيح فى الملف لابد منه

استبدال الدالتين

  1. //******************************************************************************

  2. BigInteger BigInteger::operator+=(BigInteger& b)
  3. {
  4. return (*this+b);
  5. }
  6. //*******************************************************************************
  7. BigInteger BigInteger::operator-=(BigInteger& b)
  8. {
  9. return (*this-b);
  10. }
  11.  
  12.  
  13.  

بالسطور الآتيه

  1. BigInteger BigInteger::operator+=(BigInteger& b)
  2. {
  3. *this=*this+b;
  4. return (*this);
  5. }
  6.  
  7. BigInteger BigInteger::operator-=(BigInteger& b)
  8. {
  9. *this=*this-b;
  10. return (*this);
  11. }
  12.  
  13.  
  14.  

لكى تعمل المعاملات بشكل صحيح

وسورى على هذا الخطأ

وتم التعديل فى الملف المرفق

تم تعديل هذه المشاركة بواسطة amin_mu123 في 10 سبتمبر 2008 في 03:38

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#4

يعطيك العافية

ولي عودة

#5

جميل جدا سوف أجربه إن شاء الله .

بارك الله فيك.

tvquran_6.gif

#6

:ty: لكم جميعا ومنتظر تعليقاتكم

وأكيد هناك الكثير من العيوب فى الكلاس

بارك الله فيكم جميعا

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#7

عمل رائع اخي امين , واهنئك واشكرك عليه

واشكر ايضا اخي الاستاذ فهد الشلوى على هذه البادرة .

لي ملاحظة بسيطة , لماذا لايتم تطوير الكلاس بحيث يتعامل مع الخرج مباشرة

	cout<<b+c;

بدلا من استخدام الدالة print .

وفقكم الله .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#8

شكرا لكم جميعا

وبالفعل إقتراح أخى time1 فى غاية الروعه

وقمت بتنفيذه ولله الحمد

ولكن يجب إضافة الدالتين الآتيتين الى دوال الكلاس


friend istream& operator >>(istream&, BigInteger&);
friend ostream& operator <<(ostream&,const BigInteger&);

وبعد ذلك يتم كتابة الآتى فى تفصيل دوال الكلاس


ostream& operator<<(ostream&out,const BigInteger& b)
{
return out<<(b.sign?'+':'-')<<b.num<<endl;


}
//***********************************************************************
istream& operator>>(istream& in, BigInteger& b)
{
string st;
in>>st;
BigInteger tmp(st);
b=tmp;
return in;
}
//**********************************************************************

وبهذا يمكننا استخدام cin,cout

عن طريق الإعلان العادى عن المتغير الجديد

مثل


cin>>b;
cout<<b;
BigInteger  b;

وشكرا

تم تعديل هذه المشاركة بواسطة amin_mu123 في 10 سبتمبر 2008 في 23:55

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#9

شكرا لكم جميعا

ولكن الكلاس كانت به بعض العيوب الفنيه فى حالة جمع الأعداد ( على سبيل المثال الأعداد السالبه) وقد قمت بحمد الله بمعالجتها

وكذلك القسمه ......

وكذلك ألغيت الداله print واستبدلتها بالكائن cout

وكذلك ضفت إمكانية الإدخال بالكائن cin

وتمت إضافة الداله Babs تعود بالعدد بالصوره المطلقه

وأصبح بإمكاننا استخدام الإدخال والإخراج بهذا الشكل


cin>>a>>b;
cout<<a+b;
	BigInteger a,b;

والكلاس الجديد بالمرفقات

BigInt.rar

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#10

شكرا لك اخي امين , قمت بتحميله وسأجربه بالتأكيد وابدي اذا كانت لدي اي ملاحظات .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#11

فاتح للشهيه

برنامج ايجاد المضروب بإستخدام هذا الكلاس

على اعتبار وجود الكلاس فى نفس الملف أو فى ملف هيدر مضمن فى البرنامج

نكتب هذه الداله البسيطه


{
BigInteger one="1";
BigInteger i;
BigInteger fact="1";

for (i=b;i>one;i-=one)
{
fact=fact*b;
b=b-one;
}
cout<<fact<<endl;
}
int main()
{
BigInteger s="45";
fact(s);
return 0;
}
void fact(BigInteger b)

:D

1

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

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