السلام عليكم يا أخ رسيل،
للإجابة على سآلك الأول: إنت ممكن تقرأ كل البيانات من الملف، تغير ما تريد تغييره ثم تكتب البنانات (كلها) إلى الملف. هذا قد يكون صعب إذا كان الملف كبير جدا بحيث لا يمكن تحميله في الذاكرة. في هذه الحالة يمكن قراءة الملف سطرا سطرا، مع كتابة كل سطر إلى ملف إحتياطي، مع الحرص على تغيير السطر الذي تريد تغييره، بعد ذلك يمكن إعادة تسمية الملف الإحتياطي ليصبح الملف الذي تريد.
أمًا عن السؤال الثاني، فهذا pseudo code (الكود ليس C++ ،هو فقط لإعطاء فكرة عن الحل) :
كود PHP:
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.
وشكرا