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

أرجو المساعدة من أهل العلم

بدأه lion of it في 1 يوليو 2010 · 2 رد · 350 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي التمرين التالي حاولت فيه ونفذ لكن عند الوصول التنفيذ للتابع searsh يتوقف التنفيذ ويكون حجم الملف كبير جدا

سألت أساتذة مهندسين لكن للأسف لم يعرفو أرجو المساعدة وشكرا

بفرض لدينا شركة تتضمن مجموعة من الزبائن كل زبون يعرف ب(رقم - اسم -تاريخ الميلاد -رصيد) والمطلوب:

1تابع لادخال بيانات الزبون ضمن ملف تسلسلي

2تابع لطباعة محتويات الملف

3تابع للبحث عن زبون حسب رقمه ضمن الملف التسلسي

4تابع لتعديل رقم زبو ن من خلال رقمه ضمن الملف

5تابع يعيد مصفوفة تحوي ارقام الزبائن الذين لهم سنة ميلاد معينة

6تابع يعيد اسم الزبون ذو الرصيد الادنى

#include<iostream.h>
#include<fstream.h>
#include<string.h>
struct birth_date
{ int day,month,year;
};
struct client
{ int num;
char name[20];
float balance;
birth_date date;
};
///////
void enter (ofstream &f,client c)
{



cin>>c.num>>c.name>>c.balance>>c.date.day>>c.date.month>>c.date.year;
f<<c.num<<"\t"<<c.name<<"\t"<<c.balance<<"\t"<<c.date.day<<"\t"<<c.date.month<<"\t"<<c.date.year<<endl;
}
/////////
void print(ifstream &f)
{client c;
while(f>>c.num>>c.name>>c.balance>>c.date.day>>c.date.month>>c.date.year)
cout<<c.num<<"\t"<<c.name<<"\t"<<c.balance<<"\t"<<c.date.day<<"\t"<<c.date.month<<"\t"<<c.date.year<<endl;
}
////////
bool search(ifstream &f,int n)
{client c;
f.seekg(0);
f>>c.num>>c.name>>c.balance>>c.date.day>>c.date.month>>c.date.year;
while(!f.eof())
{if(c.num==n)
return true;
f>>c.num>>c.name>>c.balance>>c.date.day>>c.date.month>>c.date.year;}
return false;
}
//////////
void replace(int x,int y,ifstream &inf,ofstream &of)
{
inf.seekg(0);
client c;
inf>>c.num>>c.name>>c.balance>>c.date.day>>c.date.month>>c.date.year;
while(!inf.eof())
{
if(c.num==x)
of<<y<<"\t"<<c.name<<"\t"<<c.balance<<"\t"<<c.date.day<<"\t"<<c.date.month<<"\t"<<c.date.year<<endl;
else
of<<c.num<<"\t"<<c.name<<"\t"<<c.balance<<"\t"<<c.date.day<<"\t"<<c.date.month<<"\t"<<c.date.year<<endl;
inf>>c.num>>c.name>>c.balance>>c.date.day>>c.date.month>>c.date.year;
}
cout<<"the operation completed successfully";
}

void array(ifstream &f,int n,int *a)
{f.seekg(0);
client c;
int i=0;
 while(f>>c.num>>c.name>>c.balance>>c.date.day>>c.date.month>>c.date.year)
  if(c.date.year==n)
  {a=c.num;
  i++;}
//////////
void low_balance(ifstream &f,char *b)
{
 f.seekg(0);
client c;

 f>>c.num>>c.name>>c.balance>>c.date.day>>c.date.month>>c.date.year;
 float low=c.balance;
 strcpy(b,c.name);
while(!f.eof())
{f>>c.num>>c.name>>c.balance>>c.date.day>>c.date.month>>c.date.year;
if(c.balance<low)
{low=c.balance;
 strcpy(b,c.name);
}
}





 /////////
main()
{
ofstream outf("c:\\mh.txt",ios::out);
ifstream inf("c:\\mh.txt",ios::in);
ofstream of("c:\\new1.txt",ios::out);
if(!outf ||!inf|| !of)
{cerr<<"coudnot opend ";
exit(1);
}


client c;
int n,m;
cout<<"enter the number of clients";cin>>m;    //áÇÏÎÇá ÇßËÑ ãä ÒÈæä
  for(int i=0;i<m;i++)
enter(outf,c);
cout<<"the contents of the file \n";
print(inf);
cout<<"enter the number of the client for search";
cin>>n;
bool g;
g=search(inf,n)
cout<<g<<endl;

cout<<"enter the birth year \n";
cin>>n;
int m=sizeof(mh.txt)/sizeof(c);
int a*=new int [m];
array(inf,n,a);
  for(int i=0;i<n;i++)cout<<a;
char b[20];
low_balance(inf,b);
 cout<<b;
 int x,y;
cout<<"enter number ";cin>>x;
cout<<"enter new number ";cin>>y;
replace(x,y,inf,of);

 getchar();
 return 0;
 }

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 2 يوليو 2010 في 02:38 — السبب: وضع الكود داخل تاج الكود و ارجو الإلتزام به &

#2

أنا لم أنظر إلى الكود و لكن فقط نظرت إلى التابع search

, و أظن أن المشكلة أحد أمرين :

1- جرب أن تستخدم الأمر التالي في الدالة search

بعد :

f.seekg(0);

اكتب :

f.clear();

وظيفة هذا التابع جعل eof = 0

أو جرب أن تغلق الملفات بعد استعمالها ..

#3

مشكور ع التعليق بس ما نفع

بس بدي اسأل ليش في التابع الرئيسي main هذه الاسطر ما عم تنفذ

bool g;

g=search(inf,n)

cout<<g<<endl;

لكن لو كتبت التالي عم تنفذ

cout<<searsh(inf,n)<<endl;

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