المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : أرجو المساعدة لحل برنامج بلغة c++



رسيل_44
06-12-2004, 06:31 PM
السلام عليكم ورحمة الله و بركاته
اخوتي الافاضل

مطلوب مني كتابة برنامج بلغة c++
و أرجو منكم المساعدة بالاجابة على تساؤلاتي:

أولا:
اذا كان عندي معلومات مخزنة باستخدام الfile
مثلا(اسم العميل , رقم الهاتف ,العنوان) , و أردت اجراء تعديل على المعلومات ( مثلا اريد تغير رقم الهاتف فقط و المحافظة على المعلومات الأخرى بدون تغير ) كيف أفعل ذلك ؟!

ثانيا :
كيف أعمل sort للمعلومات المخزنة باستخدام ال classحسب ال date
اذا كان ال date:
Day/month/year

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

wcw
06-12-2004, 09:19 PM
ماادري وش مقصدك يعني هل تريد تغيير البينات المخزنة لكل كائن لابد من استخدام الدوال وتجعل الدوال في الكلاس عامة باستخدام public بينما البيانات تجلعلها برايفت اذا كان هذا مو مقصدك ارجو ان توضح السؤال :cool:

رسيل_44
07-12-2004, 05:12 PM
السلام عليكم و رحمة الله و بركاته

شكرا على الرد أخي/أختي الكريم/الكريمة wcw و جزاك الله خيرا



و اعتذر عن غموض سؤالي

الموضوع هو كالتالي :

أنا عندي class يمثل معلومات ال user و يحتوي على الاسم , العنوان, رقم التلفون , لما يقرأ البرنامج المعلومات من ال userيخزنها في file.

سؤالي بالتحديد كيف أعدل على المعلومات المخزنة في ال ? fileيعني مثلا حبيت أغير رقم التلفون فقط و أحافظ على بقية المعلومات من غير تغير.



و أرجو منكم التكرم بالاجابة على سؤالي الثاني : :08:



كيف أعمل sort للمعلومات المخزنة باستخدام ال classحسب ال date
اذا كان ال date:
Day/month/year



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

ر-بلال
08-12-2004, 11:44 PM
السلام عليكم يا أخ رسيل،
للإجابة على سآلك الأول: إنت ممكن تقرأ كل البيانات من الملف، تغير ما تريد تغييره ثم تكتب البنانات (كلها) إلى الملف. هذا قد يكون صعب إذا كان الملف كبير جدا بحيث لا يمكن تحميله في الذاكرة. في هذه الحالة يمكن قراءة الملف سطرا سطرا، مع كتابة كل سطر إلى ملف إحتياطي، مع الحرص على تغيير السطر الذي تريد تغييره، بعد ذلك يمكن إعادة تسمية الملف الإحتياطي ليصبح الملف الذي تريد.

أمًا عن السؤال الثاني، فهذا pseudo code (الكود ليس C++ ،هو فقط لإعطاء فكرة عن الحل) :



dates[]; // an array of dates of size n (elements 0..n-1).
for(int i=0; i<n; i++) {
for(int j=i+1; j<n; j++) {
if(lessthan(dates[j], dates[i])
swap(dates, i, j);
}
}

// Returns true if date1 is older than date2, false if date2 is older or they
// are equal.
bool lessthan(date1, date2) {
if(date1.year < date2.year)
return true;
else if(date1.year > date2.year)
return false;

if(date1.month < date2.month)
return true;
else if(date1.month > date1.month)
return false;

if(date1.day < date2.day)
return true;
else if(date1.day > date2.day)
return false;

return false;
}

//swaps two dates in an array of dates
void swap(dates[], i, j) {
temp = dates[i];
date[i] = dates[j];
date[j] = temp;
}


لا تتردد بالسؤال عن معنى الكود. الشرح فد يطول، لكن إذا فهمت الدالة lessthan(date1, date2) التي تقارن تاريخين وترجع true إذا كانت الأولى أصغر من الثانية بمعنى أنها أقدم. إذا فهمت هذه الدالة فهذا هو الشيء المختلف عن ترتيب الأرقام، أي بدل أن تقارن أرقاما لكي ترتبها، فإنك تقارن dates.

وشكرا

رسيل_44
09-12-2004, 10:08 PM
السلام عليكم و رحمة الله و بركاته
شكرا أخي ر-بلال على الرد و جزاك الله خيرا .